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」の要素をクリックすると、そのアイテム内の「SubMenu」が表示されます。

助けてくれてありがとう!

4

2 に答える 2

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 に答える
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 に答える