C# WPF树视图项目模板
我的treeview运行时充满了treeview项 所有父树视图项的标记属性均为null。所有子树eviewItem(没有其他子树)都具有标记属性=对象 我想为treeviewitem.tag对象(!=null)显示不同的布局(单选按钮和文本块),但我不明白treeview项是如何工作的。。。我尝试使用分层和数据模板,但失败了C# WPF树视图项目模板,c#,wpf,C#,Wpf,我的treeview运行时充满了treeview项 所有父树视图项的标记属性均为null。所有子树eviewItem(没有其他子树)都具有标记属性=对象 我想为treeviewitem.tag对象(!=null)显示不同的布局(单选按钮和文本块),但我不明白treeview项是如何工作的。。。我尝试使用分层和数据模板,但失败了 <TreeView.ItemTemplate> <HierarchicalDataTemplate DataType="{x:Type Tree
<TreeView.ItemTemplate>
<HierarchicalDataTemplate DataType="{x:Type TreeViewItem}">
<StackPanel Orientation="Horizontal">
<RadioButton></RadioButton>
<TextBlock Text="{Binding Path=Header}"></TextBlock>
</StackPanel>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
您不能在XAML中简单地执行if和else。因此,您只能访问类型。因此,您需要做的是基于
TreeViewItem
的原始类型创建3种不同的类型,如:
class RadioTreeViewItem:TreeViewItem{}
class GeneralTreeViewItem:TreeViewItem{}
然后使用DataTemplate
为不同的元素类型声明不同的数据模板或视图,如下所示:
<TreeView.ItemTemplate>
<HierarchicalDataTemplate DataType="{x:Type TreeViewItem}">
<StackPanel DataContext={Binding}>
<DataTemplate DataType="{x:Type GeneralTreeViewItem}">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Path=Header}"></TextBlock>
</StackPanel>
</DataTemplate>
<DataTemplate DataType="{x:Type RadioTreeViewItem}">
<StackPanel Orientation="Horizontal">
<RadioButton></RadioButton>
<TextBlock Text="{Binding Path=Header}"></TextBlock>
</StackPanel>
</DataTemplate>
</StackPanel>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
当然,您需要使用这些新类型创建树,但最终您的树将与
列表
是同一个对象。您如何用数据“填充”树视图?请发布此代码。此代码不起作用(可视树只能设置一次)请发布将项目分配到树的位置的代码。此外,我已将内部数据模板包装在堆栈面板中。您在分配其项时也会这样做吗?我在运行时分配项。可以在执行期间添加/删除TreeView项