2010-03-23 74 views
3

結合問題考慮下面的數據結構:TreeView控件在WPF

List<Person> People; 
class Person { 
    List<Car> Cars; 
    List<Hobby> Hobbies; 
} 

我想一個TreeView綁定到這個結構。它應該看起來像這樣:

People 
> Frank 
    > Cars 
    > BMW 
    > Ford 
    > Hobbies 
    > Tennis 
    > Golf 
> Jane 
    > Cars 
    > Hobbies 

這怎麼能在XAML中實現?下面是我到目前爲止有:

<TreeView> 
    <TreeView.Resources> 
    <DataTemplate x:Key="PersonTemplate"> 
     <TextBlock Header="{Binding Name}"> 
     <TextBlock.ContextMenu> 
      <ContextMenu> 
      <MenuItem Header="Remove" /> 
      </ContextMenu> 
     </TextBlock.ContextMenu> 
     </TextBlock> 
    </DataTemplate> 
    </TreeView.Resources> 

    <TreeViewItem Header="{Binding Name}"IsExpanded="True" > 
    <TreeViewItem Header="People" 
      ItemsSource="{Binding People}" 
      ItemTemplate="{StaticResource PersonTemplate}"> 
    </TreeViewItem> 
    </TreeViewItem> 
</TreeView> 

這是一個後續問題binding-a-treeview-with-contextmenu-in-xaml

回答

5

這是一個偉大的方式得到使用MVVM爲樹狀結合開始:

http://www.codeproject.com/KB/WPF/TreeViewWithViewModel.aspx

+0

你擊敗了我:-)這是對錶現和數據(模型)層的清晰抽象。實際上,我在生產代碼中使用了Josh的例子,它的工作很好。 – bic 2010-03-23 22:59:50

+0

我同意,通過這個特定的示例工作真的讓一切都爲我點擊。 – gn22 2010-03-23 23:01:26

+0

好吧,這看起來很有趣。我明天要進一步閱讀。 您是否推薦使用ViewModel:class PersonViewModel {object [] Items = {new CarsViewModel(),new HobbiesViewModel()}?因此,爲每個我想要顯示的TreeViewItem創建一個ViewModel? – 2010-03-23 23:16:21