WPF多个主/详细信息,同一网格
我有一个WPF多个主/详细信息,同一网格,wpf,grid,master-detail,Wpf,Grid,Master Detail,我有一个TreeView,它有三个级别 让我们假设它是一个联盟、部门和团队TreeView 现在,当我选择树中的每个项目时,我希望看到关于它的详细信息 实现这一目标的最佳方式是什么 由于网格不包含项目(如列表框),因此我不能只设置其项目资源,并创建数据模板 我考虑过使用一个列表框,它只包含所选项目,但这似乎非常糟糕 谢谢。我将创建一个viewmodel,其中包含树结构的属性、当前选择以及当前选择的详细信息 树结构是单向绑定到treeview的,treeview中的SelectedItem是单向绑
TreeView
,它有三个级别
让我们假设它是一个联盟、部门和团队TreeView
现在,当我选择树中的每个项目时,我希望看到关于它的详细信息
实现这一目标的最佳方式是什么
由于网格
不包含项目(如列表框
),因此我不能只设置其项目资源
,并创建数据模板
我考虑过使用一个列表框
,它只包含所选项目,但这似乎非常糟糕
谢谢。我将创建一个viewmodel,其中包含树结构的属性、当前选择以及当前选择的详细信息
树结构是单向绑定到treeview的,treeview中的SelectedItem是单向绑定到当前选择属性的源(由于属性的限制)。当前选择更改后,此属性将更改子项列表,并且子项将绑定到显示它们的列表框。首先为联盟、分区和团队类定义3个数据模板。之后,将
TreeView
绑定到对象的根。您的联赛和分区类应具有返回子级的Children属性。所有类都应该有一个Name属性
然后,如果要显示单个对象,请使用ContentPresenter
,并将其内容绑定到SelectedItem
(如果TreeView
)
例如:
<StackPanel>
<StackPanel.Resources>
<DataTemplate DataType="{x:Type your_namespace:League}">
<StackPanel Orientation="Vertical">
<TextBlock Text={Binding Name}/>
<.../>
<StackPanel>
</DataTemplate>
<DataTemplate DataType="{x:Type your_namespace:Division}">
<StackPanel Orientation="Vertical">
<TextBlock Text={Binding Name}/>
<.../>
<StackPanel>
</DataTemplate>
<DataTemplate DataType="{x:Type your_namespace:Team}">
<StackPanel Orientation="Vertical">
<TextBlock Text={Binding Name}/>
<.../>
<StackPanel>
</DataTemplate>
</StackPanel.Resources>
<TreeView x:Name="_tree" ItemsSource="{Binding RootOfYourItems}">
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding Children}">
<TextBlock Text={Binding Name}/>
</HierarchicalDataTemplate>
</TreeView>
<ContentPresenter Content="{Binding Path=SelectedItem, ElementName=_tree}" />
</StackPanel>
此代码未经测试或编译,只是作为示例提供。谢谢,我不知道ContentPresenter的强大功能,让它工作了:)