XAML 在ListView中禁用键盘箭头导航

luaexgnf  于 2022-12-07  发布在  其他
关注(0)|答案(1)|浏览(138)

我有一个ListView,我试图禁用各个项目之间的键盘导航。我试图将KeyboardNavigation.DirectionalNavigation=“None”设置为ListView、其PanelTemplate以及各个项目。但都不起作用。
此外,键盘的方向导航也很混乱--面板是一个 Package 面板,按下箭头导航会很混乱,有时它也会在两个孩子之间循环,没有机会用箭头跳到其他孩子。这就是为什么我想禁用它,尽管纠正它会更好。
下面是相关代码:

<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>
jc3wubiy

jc3wubiy1#

只需为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;
    }
}

相关问题