[英]WPF TreeView ItemTemplate not applied to TreeViewItem
我有一个TreeView
并手动向其中添加两个项目( TreeViewItem
)。 我想将ItemTemplate
应用于这两个项目,但似乎ItemTemplate
并未应用于它们。 实际上,我在树中有更深的层次(因此item1和item2每个都有一个作为ItemsSource
的集合,并且有更多的HierarchicalDataTemplates
用于它们)。 但是为了演示未将第一个模板应用于第一级项目,我简化了示例。 以下是后面的代码。
TreeViewItem item1 = new TreeViewItem();
TreeViewItem item2 = new TreeViewItem();
trvRecordList.Items.Add(item1);
trvRecordList.Items.Add(item2);
这是我的xaml代码。 HierarchicalDataTemplate
写在正确的位置。
<HierarchicalDataTemplate x:Key="My_Template">
<StackPanel Orientation="Horizontal">
<Image Source="Images/Star_Blue.png"
Margin="0,0,4,0" Height="16" Width="16"/>
<TextBox Text="abcd"/>
</StackPanel>
</HierarchicalDataTemplate>
<TreeView Name="trvRecordList" Margin="2"
ItemTemplate="{StaticResource My_Template}">
</TreeView>
由于要添加的列表TreeViewItem
对象,你TreeView
,My_Template不会被应用到它。 如果检查输出窗口,将出现如下所示的错误
System.Windows.Data Error: 26 : ItemTemplate and ItemTemplateSelector are ignored for items already of the ItemsControl's container type; Type='TreeViewItem'
解决方案是将My_Template应用于TreeViewItem
本身的ItemTemplate
属性。 以下是我对您的代码所做的修改
TreeViewItem item1 = new TreeViewItem();
TreeViewItem item2 = new TreeViewItem();
item1.Items.Add("");
item1.Items.Add("");
item1.ItemTemplate = FindResource("My_Template") as HierarchicalDataTemplate;
item2.Items.Add("");
item2.Items.Add("");
item2.ItemTemplate = FindResource("My_Template") as HierarchicalDataTemplate;
trvRecordList.Items.Add(item1);
trvRecordList.Items.Add(item2);
浏览以下链接以了解有关HierarchicalDataTemplate的更多信息
编辑:
如果要将My_Template应用于TreeView
尝试以下代码。
trvRecordList.Items.Add("");
trvRecordList.Items.Add("");
ItemTemplate
用于数据对象。 检查MSDN上ItemTemplate的备注。
TreeViewItem
是为每个数据项生成的容器,并通过ItemContainerTemplate
样式。 MSDN上的ItemContainerTemplate
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.