带有垂直对齐的嵌套Listview

时间:2017-12-07 04:52:58

标签: c# listview grid uwp-xaml

我想以主项的子项应显示在主项的右侧的方式显示嵌套的列表视图。如果用户仅点击任何主要项目,则应显示子项目。

 <ListView x:Name="list1" Background="Blue" Width="200" Height="300" VerticalAlignment="Bottom">
        <ListView.ItemTemplate>
            <DataTemplate x:DataType="local:Main">
                <Grid>
                    <Grid.RowDefinitions>
                        <RowDefinition Height="Auto"/>
                        <RowDefinition Height="Auto"/>
                    </Grid.RowDefinitions>
                    <TextBlock Text="{x:Bind ItemName}" />
                    <ListView x:Name="list2" ItemsSource="{x:Bind SubItemsList}" Grid.Row="1">
                        <ListView.ItemTemplate>
                            <DataTemplate x:DataType="local:Sub">
                                <TextBlock Foreground="Red" Text="{x:Bind SubItemName}"/>
                            </DataTemplate>
                        </ListView.ItemTemplate>
                    </ListView>
                </Grid>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>

当使用上面的代码时,我连续获得Main项目,而另一行是subitems。

Main 1
 Sub 1
 Sub 1
Main 2
 Sub 2
 Sub 2

但我的输出应该是

Main Items    Sub Items  
Main 1        Sub 1
              Sub 1
Main 2        Sub 2
              Sub 2

如果用户点击Main 1,它应该显示其子项目,依此类推。否则无需显示子项目。是否可以对上述代码进行任何更改?

1 个答案:

答案 0 :(得分:0)

您必须使用FlyoutMenu控件,因为使用ListView无法满足您的要求。 ListView将显示所有Main和SubItems,无论它们是否被点击。然而,FlyoutMenu的工作方式与您在此处的要求完全相同。它会在点击时显示SubItems,并在右侧(或您选择的任何一侧)显示它。

The microsoft link for the basic idea of Flyout menu

A video tutorial to get you up and running with it right away

希望这能帮到你!!