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)
您是否在包含控件的项目的Generic.xaml文件中使用ControlTemplate创建了MoveableItemsControl的默认样式?如果没有,控件在加载时无需渲染.
更新
ItemsControl的ControlTemplate需要包含ItemsPresenter作为要注入的项的占位符(类似于ContentPresenter for ContentControl).您当前的模板只有一个空边框.
| 归档时间: |
|
| 查看次数: |
2053 次 |
| 最近记录: |