Используйте Contrl + (Shift) + Tab для переключения между вкладками / заголовками в Pivot Control?(UWP) - PullRequest
0 голосов
/ 03 декабря 2018

Я пытаюсь использовать 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 Ответ

0 голосов
/ 04 декабря 2018

Проблема в том, что ни один ускоритель не вызывается.Я вижу в средстве просмотра живого свойства, что Ctrl + Tab зарегистрирован

Это потому, что Ctrl + Tab является поведением клавиатуры по умолчанию для общих элементов управления UWP.Если вы не добавляете никаких ускорителей клавиатуры для управления Pivot, тогда вы нажимаете Ctrl + Tab , он все равно будет переключаться между PivitItems.Если вы измените его на Ctrl + Z , событие Invoked будет запущено.

...