TreeView with DataGrid用于显示分层数据

时间:2017-08-01 08:48:34

标签: c# wpf xaml user-controls treeview

这就是我所拥有的:

ObservableCollection<Item>()

ObservableCollection<Group> Groups = new ObservableCollection<Group>()

每个组都有一个键,一个名称,一个类型为ObservableCollection<Group>()的子组 以及itemList类型ObservableCollection<Item>()

主窗口中的My Treeview如下所示:

<TreeView Name="treeViewGroup" BorderThickness="0,2,0,0" ItemsSource="{Binding}">
<TreeView.Resources>
    <HierarchicalDataTemplate DataType="{x:Type data:Group}" ItemsSource="{Binding Items}">
        <StackPanel>
            <TextBlock Text="{Binding Path=Name}" />
        </StackPanel>
    </HierarchicalDataTemplate>

    <DataTemplate DataType="{x:Type data:ItemCollection}" >
        //<StackPanel >
        //  <test:ucTable x:Name="table1" DataContext="{Binding IpAdress}">
        //      <TextBlock Text="{Binding Path=Name}" />
        //  </test:ucTable>
        //</StackPanel>
    </DataTemplate>
</TreeView.Resources>

表中的uc如下所示:

<UserControl x:Class="namespace.GUI.ucTable"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
         x:Name="ucTable"
         mc:Ignorable="d" 
         d:DesignHeight="200" d:DesignWidth="500" >

<DataGrid x:Name="table1" Margin="10,10,10,10"
            AutoGenerateColumns="False" CanUserAddRows="False" 
            CanUserReorderColumns="False" CanUserResizeRows="False" CanUserResizeColumns="False" 
            AlternatingRowBackground="AliceBlue" Grid.IsSharedSizeScope="True">

  <DataGrid.ContextMenu>
    <ContextMenu>
      <MenuItem Header="Information"/>
      <MenuItem Header="Delete"/>
    </ContextMenu>
  </DataGrid.ContextMenu>

  <DataGrid.Columns>
    <DataGridTextColumn Header="Name" Binding="{Binding Name, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" Width="Auto" />
    <DataGridTextColumn Header="Location" Binding="{Binding Location, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" Width="Auto" />
    <DataGridTextColumn Header="Ip" Binding="{Binding IpAdress, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" Width="Auto" IsReadOnly="True" />

  </DataGrid.Columns>
</DataGrid>

我想要的是一个包含所有嵌套组的Treeview,如果一个组有一个itemList,那么这些项应该在datagrid的usercontrol中。

我尝试了很多例子和东西,但它没有用。 有人有想法吗?

提前致谢

0 个答案:

没有答案