我有1,2,3,4,5,6,7,8列
前两个是属性,其他是数据 我想将每行拆分为两行并使用标签作为列标题
1,2,3,4,5
1,2,6,7,8
如果我能做到
1
2
3 4 5
6 7 8
那会更好。但我不知道从哪里开始
答案 0 :(得分:1)
我的解决方案是使用带有水平堆栈面板的扩展器,用于Column1, 另一个扩展器具有用于Column2的水平堆栈面板,而用于第3列到第8列的扩展器使用数据网格。所有这些内容都是从网格中定义的项控件派生的。 数据本身可以定义为可观察的集合源,可以根据程序需求进行更新。
<ItemsControl ItemsSource="{Binding Datasource1}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel >
</StackPanel>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Expander Header="Header1" >
<Expander.HeaderTemplate>
<DataTemplate>
<StackPanel>
</StackPanel>
</DataTemplate>
</Expander.HeaderTemplate>
<Grid>
<ItemsControl ItemsSource="{Binding Datasource2}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel></StackPanel>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Expander Header="Header2">
<Expander.HeaderTemplate>
<DataTemplate>
<StackPanel>
</StackPanel>
</DataTemplate>
</Expander.HeaderTemplate>
<DataGrid ItemsSource="{Binding Datasource3to8}" AutoGenerateColumns="False" >
<DataGrid.Columns>
<DataGridTextColumn Header="Test"
Width="Auto"
Binding="{Binding Datasource3}" />
<DataGridTextColumn Header="Test"
Width="Auto"
Binding="{Binding Datasource4}" />
<DataGridTextColumn Header="Test"
Width="Auto"
Binding="{Binding Datasource5}" />
<DataGridTextColumn Header="Test"
Width="Auto"
Binding="{Binding Datasource6}" />
<DataGridTextColumn Header="Test"
Width="Auto"
Binding="{Binding Datasource7}" />
<DataGridTextColumn Header="Test"
Width="Auto"
Binding="{Binding Datasource8}" />
</DataGrid.Columns>
</DataGrid>
</Expander>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Grid>
</Expander>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
另一种选择是使用层次数据网格。