2011-01-12 63 views
3

我目前正试图将我的业务对象绑定到树视图作为根。并将其收藏财产视为孩子。 [我想通过BINDING来实现这个]WPF:Treeview项目根目录使用不同的模板,然后子节点

就像这样。

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;}} 

} 

我希望我的树视图被这样表示:

  • “复选框绑定到IsSelected”,“文本绑定到一些儿童”
  • “ 绑定到我的孩子的
    • 名单”
    • 孩子绑定到我的“孩子”列表
    • 绑定到我的“孩子”的孩子列表
  • “复选框绑定到IsSelected”,“文本绑定到一些儿童儿童”
  • 绑定到我的孩子的
  • 名单“”
  • 孩子的名单绑定到我的““ 绑定到我的孩子的
    • 名单”儿童”

我不知道如何做到这一点在XAML:

<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> 

我知道上述不对,但我想知道是否有办法正确地做到这一点。

感谢和问候,

回答

5

当然,你可以使用HierarchicalDataTemplate.ItemTemplate属性来定义用于AnotherObject情况下收集数据的模板。

<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> 
+1

WOW,非常感谢,我认为它没有工作,但最后我有一个错字,当我在我的对象名拷入你的代码。谢谢A LOT MAN – Kev84 2011-01-13 00:03:29