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

从ItemsControl派生的WPF自定义控件无法显示绑定数据,wpf,wpf-controls,binding,Wpf,Wpf Controls,Binding,我创建了一个名为MovableItemsControl的自定义控件,该控件继承自ItemsControl,以便重写GetContainerForItemOverride()方法。我的问题是绑定集合中没有任何对象显示。目前,我正在绑定到一个OberservableCollection的字符串,当我查看调试器时,我可以看到它们在ItemsSource中 自定义控件如下所示: public class MovableItemsControl : ItemsControl { static Mo

我创建了一个名为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;
    }
}
公共类MovableItemsControl:ItemsControl
{
静态MovableItemsControl()
{          
DefaultStyleKeyProperty.OverrideMetadata(typeof(MovableItemsControl),new FrameworkPropertyMetadata(typeof(MovableItemsControl));
}
/// 
///将添加到ItemsControl的每个内容对象包装到NodeWrapper中
/// 
受保护的覆盖依赖对象GetContainerForItemOverride()
{
NodeWrapper NodeWrapper=新的NodeWrapper();
返回nodeWrapper;
}
受保护的覆盖布尔IsItemItsOwnContainerOverride(对象项)
{
退货项目为NodeWrapper;
}
}
NodeWrapper是一个UserControl,由一个派生自Thumb(MoveThumb)的自定义控件和一个标签(该标签仅用于测试)组成


是否已在包含控件的项目的Generic.xaml文件中使用ControlTemplate为MoveableItems控件创建了默认样式?如果不是,则控件加载时将没有任何可渲染的内容

更新

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

我认为您的样式控制模板边框中也缺少一个:
a) 项目演示者(如
)或

b) IsItemsHost设置为true的窗格(例如

我创建了一个默认样式。我把它编辑成我的问题:
    <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>