WPF中的TreeView绑定问题
考虑以下数据结构:WPF中的TreeView绑定问题,wpf,xaml,treeview,Wpf,Xaml,Treeview,考虑以下数据结构: List<Person> People; class Person { List<Car> Cars; List<Hobby> Hobbies; } 如何在XAML中实现这一点?以下是到目前为止我得到的信息: <TreeView> <TreeView.Resources> <DataTemplate x:Key="PersonTemplate"> <TextBl
List<Person> People;
class Person {
List<Car> Cars;
List<Hobby> 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>
这是对的后续问题这是开始使用MVVM进行treeview绑定的一个好方法:
你比我强:-)这是对表示和数据(模型)层的一个清晰抽象。实际上,我在生产代码中使用了Josh的示例,效果非常好。我同意,使用这个特定的示例确实让我觉得一切都很好。好吧,这看起来很有趣。我明天要做进一步的阅读。您是否建议使用如下视图模型:class PersonViewModel{object[]Items={new CarsViewModel(),new HobbiesViewModel()}?从而为我要显示的每个TreeItem创建一个ViewModel?
<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>