0

現在、SplitView.Pane を使用して UWP アプリ ビルド用のハンバーガー メニューを用意しています。

この実装の問題点は、「シンボル」または<Button>要素のみが実際にクリック可能であり、ペイン内のその横のテキストはクリックできないことです。

このフォーラムやその他のチュートリアルで、ListView を使用してこの問題を解決した人もいると読みましたが、GitHub サンプルでは、​​単純な XAML 実装ではなく CS でこれを行っていることがわかります。

XAMLでこれを直接行う方法を知っている人はいますか?

4

2 に答える 2

1

ListView はItemsControlであるため、任意のタイプの項目のコレクションを含めることができます。ビューにデータを設定するには、項目を Items コレクションに追加するか、ItemsSourceプロパティをデータ ソースに設定します。

詳細については、ListViewを参照してください。

一般的なシナリオは、ビジネス オブジェクトのコレクションにバインドすることです。C# および Visual Basic では、ジェネリック ObservableCollection クラスは、データ バインディングに適したコレクションです。詳細については、「アイテムのコレクションへのバインド」を参照してください。

ただし、 XAML コードに追加ListViewItemすることもできます。ListView

例えば:

<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
    <Grid.RowDefinitions>
        <RowDefinition Height="auto"></RowDefinition>
        <RowDefinition Height="*"></RowDefinition>
    </Grid.RowDefinitions>
    <RelativePanel>
        <Button FontFamily="Segoe MDL2 Assets" FontSize="36" Content="&#xE700;" Click="Button_Click"></Button>
    </RelativePanel>
    <SplitView Grid.Row="1" Name="mySplitView" DisplayMode="CompactOverlay" OpenPaneLength="200" CompactPaneLength="56" HorizontalAlignment="Left">
        <SplitView.Pane>
            <ListView Name="MyListView"  SelectionChanged="ListView_SelectionChanged">
                <ListView.Items>
                    <ListViewItem Name="FristItem">
                        <StackPanel Orientation="Horizontal">
                            <TextBlock  FontFamily="Segoe MDL2 Assets" FontSize="36" Text="&#xE170;"></TextBlock>
                            <TextBlock Margin="20,0,0,0" Text="Click" FontSize="36"></TextBlock>
                        </StackPanel>
                    </ListViewItem>
                    <ListViewItem Name="SecondItem">
                        <StackPanel Orientation="Horizontal">
                            <TextBlock  FontFamily="Segoe MDL2 Assets" FontSize="36" Text="&#xE171;"></TextBlock>
                            <TextBlock Margin="20,0,0,0" Text="Click" FontSize="36"></TextBlock>
                        </StackPanel>
                    </ListViewItem>
                </ListView.Items>
            </ListView>
        </SplitView.Pane>

        <SplitView.Content>
            <Frame Name="MyFrame"></Frame>
        </SplitView.Content>
    </SplitView>
</Grid>

コードビハインド:

private void ListView_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    if (MyListView.SelectedItem.Equals(FristItem))
    {
    }
    else if (MyListView.SelectedItem.Equals(SecondItem))
    {
    }
}

private void Button_Click(object sender, RoutedEventArgs e)
{
    mySplitView.IsPaneOpen = !mySplitView.IsPaneOpen;
}
于 2016-03-11T07:54:51.613 に答える