Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WPF多个主/详细信息,同一网格_Wpf_Grid_Master Detail - Fatal编程技术网

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的强大功能,让它工作了:)