1

ListView があり、個々の項目間のキーボード ナビゲーションを無効にしようとしています。KeyboardNavigation.DirectionalNavigation="None" を ListView、その PanelTemplate、および個々の項目に設定しようとしました。どれもうまくいきませんでした。

また、キーボードの方向ナビゲーションがめちゃくちゃです。パネルはラップパネルであり、矢印を押すと無秩序にナビゲートされます。また、2 つの子の間だけを循環し、矢印で他の子にジャンプする機会がない場合もあります。そのため、無効にしたいのですが、修正したほうがよいでしょう。

関連するコードは次のとおりです。

<ListView IsTabStop="False" ItemsSource="{Binding Symbols}" SelectedItem="{Binding Selected,Mode=TwoWay}" IsSynchronizedWithCurrentItem="True" KeyboardNavigation.DirectionalNavigation="None">

<ListView.ItemsPanel>
            <ItemsPanelTemplate>
                <WrapPanel Orientation="Horizontal" Width="210" Margin="0,12" KeyboardNavigation.DirectionalNavigation="None" />
            </ItemsPanelTemplate>
        </ListView.ItemsPanel>

 <ListView.ItemTemplate>
            <DataTemplate>
                <Border Width="24" Height="24" Background="White"
          BorderBrush="Black" BorderThickness="1 1 1 1" Margin="0"
                        KeyboardNavigation.IsTabStop="False" KeyboardNavigation.DirectionalNavigation="None">
                    <TextBlock Text="{Binding Text}" FontSize="20" VerticalAlignment="Center" HorizontalAlignment="Center" x:Name="textBlock" FontFamily="Verdana, Arial"/>
                </Border>
            </DataTemplate>
        </ListView.ItemTemplate>
4

1 に答える 1

2

PreviewKeyDown イベントのハンドラーを追加するだけです。

    private void listView1_PreviewKeyDown(object sender, KeyEventArgs e)
    {
        switch(e.Key)
        {
            case Key.Left:
            case Key.Right:
            case Key.Up:
            case Key.Down:
                e.Handled = true;
                break;
            default:
                break;
        }
    }
于 2012-07-10T11:21:18.687 に答える