1

我正在开发一个 WinRT 应用程序,并且知道我想要做什么。我想在单击时在列表的元素内显示一个列表。因此,当我单击第一个列表中的一个项目时,该项目内的一个列表将展开。

<ListView x:Name="SectionListView" SelectionChanged="ListSelectionChanged">
    <ListView.ItemTemplate>
        <DataTemplate>
            <Grid>
                <StackPanel>
                    <Grid>
                        <TextBlock Text="{Binding Name}" />
                        <Image Source="ms-appx:///Assets/EmbossedEllipse.png" />
                        <TextBlock Text="{Binding NumberOfQuestions}"  />
                    </Grid>
                </StackPanel>
                <ListView x:Name="SubMenu" ItemsSource="{Binding Branches}" Visibility="Collapsed">
                    <ListView.ItemTemplate>
                        <DataTemplate>
                            <StackPanel>
                                <TextBlock Text="{Binding Name}" />
                            </StackPanel>
                        </DataTemplate>
                    </ListView.ItemTemplate>
                </ListView>
            </Grid>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

当我单击“SectionListView”中的元素时,我希望该项目内的“子菜单”可见。

感谢您的帮助!

4

2 回答 2

0

您可以使用转换器来更改SubMenu可见性的状态。

编辑:添加一个属性以知道您的项目已被选中(布尔值)。

<ListView x:Name="SubMenu" ItemsSource="{Binding Branches}" Visibility="{Binding IsSelected, Converter={StaticResource BooleanToVisibilityConverter}}">
    <ListView.ItemTemplate>
        <DataTemplate>
            <StackPanel>
                <TextBlock Text="{Binding Name}" />
            </StackPanel>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

转换器:

public sealed class BooleanToVisibilityConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, string language)
    {
        return (value is bool && (bool)value) ? Visibility.Visible : Visibility.Collapsed;
    }

    public object ConvertBack(object value, Type targetType, object parameter, string language)
    {
        return value is Visibility && (Visibility)value == Visibility.Visible;
    }
}

希望能帮助到你!

于 2013-03-06T10:05:10.073 回答
0

使用ListBoxItem.IsSelected附加属性,它就是为了这样的目的而引入的。这里有一些 XAML 可以帮助您入门(如果您还没有在某处声明 BooleanToVisibilityConverter)。

<ListView x:Name="SubMenu" Visibility="{Binding IsSelected, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListBoxItem}}, Converter={StaticResource BooleanToVisibilityConverter}}" ...
于 2013-03-06T11:08:05.123 回答