从ItemsControl派生的WPF自定义控件无法显示绑定数据

Vis*_*ish 3 wpf binding wpf-controls

我创建了一个名为MovableItemsControl的自定义控件,继承自ItemsControl,以覆盖GetContainerForItemOverride()方法.我的问题是绑定集合中没有任何对象正在显示.目前,我绑定了一个OberservableCollection字符串,当我查看调试器时,我可以看到它们在ItemsSource中.

自定义控件如下所示:

public class MovableItemsControl : ItemsControl
{
    static MovableItemsControl()
    {          
        DefaultStyleKeyProperty.OverrideMetadata(typeof(MovableItemsControl), new FrameworkPropertyMetadata(typeof(MovableItemsControl)));
    }

    /// <summary>
    /// Wraps each content object added to the ItemsControl in a NodeWrapper
    /// </summary>
    protected override DependencyObject GetContainerForItemOverride()
    {
        NodeWrapper nodeWrapper = new NodeWrapper();            
        return nodeWrapper;
    }

    protected override bool IsItemItsOwnContainerOverride(object item)
    {
        return item is NodeWrapper;
    }
}
Run Code Online (Sandbox Code Playgroud)

NodeWrapper是一个UserControl,由一个派生自Thumb(MoveThumb)的自定义控件和一个Label(Label仅用于测试)组成.

    <Style TargetType="{x:Type local:MovableItemsControl}">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type local:MovableItemsControl}">
                <Border Background="{TemplateBinding Background}"
                        BorderBrush="{TemplateBinding BorderBrush}"
                        BorderThickness="{TemplateBinding BorderThickness}">
                </Border>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>   
Run Code Online (Sandbox Code Playgroud)

Joh*_*wen 5

您是否在包含控件的项目的Generic.xaml文件中使用ControlTemplate创建了MoveableItemsControl的默认样式?如果没有,控件在加载时无需渲染.

更新
ItemsControl的ControlTemplate需要包含ItemsPresenter作为要注入的项的占位符(类似于ContentPresenter for ContentControl).您当前的模板只有一个空边框.