Пример #1
0
        private void ColorPalettePage_KeyDown(object sender, KeyRoutedEventArgs e)
        {
            var gridView = sender as GridView;

            if (e.OriginalKey == Windows.System.VirtualKey.Right && gridView.SelectedIndex ==
                gridView.ItemsPanelRoot.Children.Count - 1)
            {
                ColorPaletteChangeWithKeyboard = PaletteSwitchingDirectionWithKeyboard.Next;
            }
            else if (e.OriginalKey == Windows.System.VirtualKey.Left && gridView.SelectedIndex == 0)
            {
                ColorPaletteChangeWithKeyboard = PaletteSwitchingDirectionWithKeyboard.Prev;
            }
        }
Пример #2
0
        // If FlipView selection has been changed with keyboard, set focus on appropriate colorItem.
        private void ColorPaletteFlipView_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            // Because sometimes, Focus shifts to FlipViewItem when arrow key is spammed.
            var x = FocusManager.GetFocusedElement();

            if (x is FlipViewItem)
            {
                ColorPaletteChangeWithKeyboard = (PalettePageIndex + 1 == ColorPaletteFlipView.SelectedIndex) ?
                                                 PaletteSwitchingDirectionWithKeyboard.Next : PaletteSwitchingDirectionWithKeyboard.Prev;
            }

            PalettePageIndex = ColorPaletteFlipView.SelectedIndex;

            var flipView = sender as FlipView;

            if (ColorPaletteChangeWithKeyboard == PaletteSwitchingDirectionWithKeyboard.None)
            {
                return;
            }

            var      flipViewItems   = flipView.ItemsPanelRoot.Children;
            GridView currentGridView = null;

            foreach (FlipViewItem flipViewItem in flipViewItems)
            {
                if ((flipViewItem.Content as ColorPalettePageViewModel) == flipView.SelectedItem)
                {
                    currentGridView = flipViewItem.ContentTemplateRoot as GridView;
                    int index = (ColorPaletteChangeWithKeyboard == PaletteSwitchingDirectionWithKeyboard.Next) ?
                                0 : currentGridView.ItemsPanelRoot.Children.Count - 1;
                    var item = currentGridView.ItemsPanelRoot.Children[index] as GridViewItem;
                    item.Focus(FocusState.Keyboard);
                }
            }

            ColorPaletteChangeWithKeyboard = PaletteSwitchingDirectionWithKeyboard.None;
        }