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

时间:2014-12-23 14:31:27

标签: c# wpf visual-studio xaml

我尝试将List>可视化但是当谈到改变我的桌子的方向时,我不知道如何做到这一点。

现在表:

list1a list1b list1c
list2a list2b
list3a list3b list3c

我需要的是什么:

list1a list2a list3a
list1b list2b list3b
list1c        list3c

通过将stackpannel方向更改为vertical来获得的结果:

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())); }

1 个答案:

答案 0 :(得分:1)

根据你发布的代码,我认为你有两个嵌套的ItemsControls。第一个ItemControl应该有一个StackPanel,Orientation = Horizo​​ntal nope?然后内部ItemsControls应该是Orientation = 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>