使用 Contrl+(Shift)+Tab 在 Pivot Control 中循环浏览选项卡/标题? (UWP)

Posted

技术标签:

【中文标题】使用 Contrl+(Shift)+Tab 在 Pivot Control 中循环浏览选项卡/标题? (UWP)【英文标题】:Use Contrl+(Shift)+Tab to cycle through tabs/headers in Pivot Control? (UWP) 【发布时间】:2018-12-03 11:02:09 【问题描述】:

我正在尝试使用 KeyboardAccelerators 更改 PivotControl 中的页面。 我使用了文档中的代码:

<Pivot x:Name="rootPivot" Title="PIVOT TITLE">
    <Pivot.RightHeader>
        <CommandBar ClosedDisplayMode="Compact">
            <AppBarButton Icon="Back" Label="Previous" Click="BackButton_Click"/>
            <AppBarButton Icon="Forward" Label="Next" Click="NextButton_Click"/>
        </CommandBar>
    </Pivot.RightHeader>
    <PivotItem Header="Pivot Item 1">
        <!--Pivot content goes here-->
        <TextBlock Text="Content of pivot item 1."/>
    </PivotItem>
    <PivotItem Header="Pivot Item 2">
        <!--Pivot content goes here-->
        <TextBlock Text="Content of pivot item 2."/>
    </PivotItem>
    <PivotItem Header="Pivot Item 3">
        <!--Pivot content goes here-->
        <TextBlock Text="Content of pivot item 3."/>
    </PivotItem>
</Pivot>

和后面的代码:

public MainPage() 
        InitializeComponent();
        KeyboardAccelerator goRight = new KeyboardAccelerator() 
            ScopeOwner = rootPivot,
            Modifiers = Windows.System.VirtualKeyModifiers.Control,
            Key = Windows.System.VirtualKey.Tab
        ;
        goRight.Invoked += (s, e) => 
            e.Handled = true;
            int index = rootPivot.SelectedIndex;
            index += 1;
            index %= rootPivot.Items.Count;
            rootPivot.SelectedIndex = index < 0 ? index + rootPivot.Items.Count : index;
        ;
        rootPivot.KeyboardAccelerators.Add(goRight);

        KeyboardAccelerator goLeft = new KeyboardAccelerator() 
            ScopeOwner = rootPivot,
            Modifiers = Windows.System.VirtualKeyModifiers.Control | Windows.System.VirtualKeyModifiers.Shift,
            Key = Windows.System.VirtualKey.Tab
        ;
        goLeft.Invoked += (s, e) => 
            e.Handled = true;
            int index = rootPivot.SelectedIndex;
            index -= 1;
            index %= rootPivot.Items.Count;
            rootPivot.SelectedIndex = index < 0 ? index + rootPivot.Items.Count : index;
        ;
        rootPivot.KeyboardAccelerators.Add(goLeft);
    

问题是两个加速器都没有被调用。我可以在实时属性查看器中看到 Ctrl+Tab 已注册(找不到 Ctrl+Shift+Tab)。是否有任何需要覆盖的本机行为?感谢您的帮助。

【问题讨论】:

【参考方案1】:

问题是两个加速器都没有被调用。我可以在实时属性查看器中看到 Ctrl+Tab 已注册

这是因为 Ctrl+Tab 是常用 UWP 控件的默认键盘行为。如果您没有为 Pivot 控件添加任何键盘加速器,那么,您按下 Ctrl+Tab,它仍然会在 PivitItem 之间切换。如果将其更改为 Ctrl+Z,则将触发 Invoked 事件。

【讨论】:

添加到我的解决方案中:我在影响行为的特殊 VM 中运行 Windows。在本机运行时,行为如您所描述。

以上是关于使用 Contrl+(Shift)+Tab 在 Pivot Control 中循环浏览选项卡/标题? (UWP)的主要内容,如果未能解决你的问题,请参考以下文章

Shift+Tab 在 TreeView 控件中不起作用

如何在 WPF 中捕获 Ctrl + Tab 和 Ctrl + Shift + Tab?

Eclipse 的 Visual Studio Ctrl+Tab 和 Ctrl+Shift+Tab 等效项

Delphi 在应用程序中获取“Ctrl Tab”和“Ctrl Shift Tab”

Pycharm中常用的快捷键

Kivy:Shift+Tab 不适用于 TextInput