WPF:Treeview项目根使用不同的模板,然后使用子节点
我目前正在尝试将我的业务对象绑定到树视图作为根。并将其集合属性作为子对象。[我想通过绑定实现这一点] 像这样的WPF:Treeview项目根使用不同的模板,然后使用子节点,wpf,templates,binding,treeview,Wpf,Templates,Binding,Treeview,我目前正在尝试将我的业务对象绑定到树视图作为根。并将其集合属性作为子对象。[我想通过绑定实现这一点] 像这样的 public object MyBusinessObject { private int _number; private bool _isSelected; private ObservableCollection<AnotherObject> _other = new ObservableCollection<AnotherObject>(
public object MyBusinessObject
{
private int _number;
private bool _isSelected;
private ObservableCollection<AnotherObject> _other = new ObservableCollection<AnotherObject>();
public int Number { get {return _number;} set {_number = value;}}
public bool IsSelected{ get {return _isSelected;} set {_isSelected= value;}}
public ObservableCollection<AnotherObject> Children { get {return _other;}}
}
公共对象MyBusinessObject
{
私人整数;
私立学校当选;
私有ObservableCollection_other=新ObservableCollection();
公共整数{get{return{u Number;}set{{u Number=value;}}
public bool IsSelected{get{return{u IsSelected;}set{u IsSelected=value;}
公共ObservableCollection子项{get{return}other;}
}
我希望我的treeview可以这样表示:
- “绑定到IsSelected的复选框”“绑定到数字的文本”
- 绑定到我的“孩子”的孩子列表
- 绑定到我的“孩子”的孩子列表
- 绑定到我的“孩子”的孩子列表
- “绑定到IsSelected的复选框”“绑定到数字的文本”
- 绑定到我的“孩子”的孩子列表
- 绑定到我的“孩子”的孩子列表
- 绑定到我的“孩子”的孩子列表
<TreeView x:Name="_tv" ItemsSource="{Binding Path=MyBusinessObject}" >
<TreeView.Resources>
<HierarchicalDataTemplate>
<CheckBox Content="{Binding Path=Number} IsChecked="{Binding Path=IsSelected}" />
</HierarchicalDataTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding Path=Children}">
<TextBlock Text="{Binding Path=Name}" />
</HierarchicalDataTemplate>
</TreeView.Resources>
</TreeView>
当然,可以使用HierarchycalDataTemplate.ItemTemplate属性定义用于收集其他对象实例的数据模板
<TreeView ItemsSource="{Binding SomeCollectionOfObjects}">
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding Children}">
<!-- This is used for your AnotherObject instances -->
<HierarchicalDataTemplate.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}" />
</DataTemplate>
</HierarchicalDataTemplate.ItemTemplate>
<!-- This is used for your MyBusinessObject instances -->
<CheckBox Content="{Binding Number}" IsChecked="{Binding IsSelected}" />
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
WOW,非常感谢,我原以为它不起作用,但当我在我的对象名称上复制你的代码时,结果我输入了一个错误。非常感谢阅读本文的其他人,请确保将ItemsSource=“{Binding Path=MyBusinessObject}”添加到TreeView元素以使其正常工作。OP在其示例中使用了该选项,但这并不一定表示ItemsSource实际上需要是一个对象集合。将其直接绑定到单个MyBusinessObject将不起作用。如果只有一个根项目,它仍然需要在一个根项目的集合中。我添加了一个ItemsSource属性以使示例更清晰。