【发布时间】:2011-07-12 09:59:45
【问题描述】:
我创建了一个名为 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;
}
}
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>
【问题讨论】:
标签: wpf wpf-controls binding