如何将此表从水平更改为垂直

本文关键字:垂直 水平 | 更新日期: 2023-09-27 18:35:10

我尝试可视化列表>但是当涉及到更改表格的方向时,我不知道该怎么做。

现在的表格:

list1a list1b list1c
list2a list2b
list3a list3b list3c

我需要什么:

list1a list2a list3a
list1b list2b list3b
list1c        list3c

通过将堆叠面板方向更改为垂直,我得到了什么:

list1a
list1b
list1c
list2a
list2b
list3a
list3b
list3c

我的 Xaml:

<Window.Resources>
    <DataTemplate x:Key="DataTemplate_Level2">
        <Grid Height="26" Width="120">
            <TextBlock Text="{Binding title}" Margin="4" />
        </Grid>
    </DataTemplate>
    <DataTemplate x:Key="DataTemplate_Level1">
        <ItemsControl ItemsSource="{Binding}" ItemTemplate="{DynamicResource DataTemplate_Level2}">
            <ItemsControl.ItemsPanel>
                <ItemsPanelTemplate>
                    <StackPanel Orientation="Horizontal"/>
                </ItemsPanelTemplate>
            </ItemsControl.ItemsPanel>
        </ItemsControl>
    </DataTemplate>
</Window.Resources>
<Grid>
    <ScrollViewer HorizontalScrollBarVisibility="Auto">
        <ItemsControl x:Name="tbParts" ItemTemplate="{DynamicResource DataTemplate_Level1}" />
    </ScrollViewer>
</Grid>

编辑:

我的表模型的人口:

List<string> nodes = GetNodes()
List<List<Part>> table = new List<List<Part>>();
for (int i = 0; i < nodes.Count; i++)
{ TestOutput.table.Add(new List<Part>(parts.Where(x => x.techRequired == nodes[i]).ToList())); }

如何将此表从水平更改为垂直

从您发布的代码中,我假设您嵌套了两个 ItemsControls。第一个项目控件应该有一个堆栈面板,方向 = 水平 nope ?然后,内部的 ItemsControls 应为 Direction = Vertical。我会用一些代码更清楚:-) :

    <Window.Resources>
    <DataTemplate x:Key="DataTemplate_Level2">
        <Grid Height="26" Width="120">
            <TextBlock Text="{Binding title}" Margin="4" />
        </Grid>
    </DataTemplate>
    <DataTemplate x:Key="DataTemplate_Level1">
        <ItemsControl ItemsSource="{Binding}" ItemTemplate="{DynamicResource DataTemplate_Level2}">
            <ItemsControl.ItemsPanel>
                <ItemsPanelTemplate>
                    <StackPanel Orientation="Vertical"/>
                </ItemsPanelTemplate>
            </ItemsControl.ItemsPanel>
        </ItemsControl>
    </DataTemplate>
</Window.Resources>
<Grid>
    <ScrollViewer HorizontalScrollBarVisibility="Auto">
        <ItemsControl x:Name="tbParts" ItemTemplate="{DynamicResource DataTemplate_Level1}">
         <ItemsControl.ItemsPanel>
             <StackPanel Orientation="Horizontal"/>
         </ItemsControl.ItemsPanel>
        </ItemsControl>
    </ScrollViewer>
</Grid>