Esempio n. 1
0
        private void KeyboardNavigationInnerScopeTest(KeyboardNavigationMode innerScopeMode, Orientation orientation, int[] childrenTabIndex, FocusNavigationDirection direction, int[] expectedTargetChildrenIndex)
        {
            Control[] children = new[]
            {
                new Control {
                    Name = "child0", Width = 100, Height = 100
                },
                new Control {
                    Name = "child1", Width = 100, Height = 100
                },
                new Control {
                    Name = "child2", Width = 100, Height = 100
                },
                new Control {
                    Name = "child3", Width = 100, Height = 100
                },
                new Control {
                    Name = "child4", Width = 100, Height = 100
                },
            };

            if (childrenTabIndex != null)
            {
                for (int i = 0; i < childrenTabIndex.Length; i++)
                {
                    KeyboardNavigation.SetTabIndex(children[i], childrenTabIndex[i]);
                }
            }

            StackPanel panel = new StackPanel {
                Name = "panel", Orientation = orientation
            };

            panel.Children.Add(children[1]);
            panel.Children.Add(children[2]);
            panel.Children.Add(children[3]);

            StackPanel root = new StackPanel {
                Name = "root", Orientation = orientation, IsRootElement = true
            };

            root.Children.Add(children[0]);
            root.Children.Add(panel);
            root.Children.Add(children[4]);

            KeyboardNavigation.SetTabNavigation(root, KeyboardNavigationMode.Cycle);
            KeyboardNavigation.SetTabNavigation(panel, innerScopeMode);

            for (int i = 0; i < expectedTargetChildrenIndex.Length; i++)
            {
                Visual currentChild        = children[i];
                Visual expectedTargetChild = children[expectedTargetChildrenIndex[i]];
                Visual targetChild         = KeyboardNavigationTarget.FindTarget(currentChild, direction, KeyboardNavigation.TabNavigationProperty);

                Assert.AreEqual(expectedTargetChild, targetChild);
            }
        }
Esempio n. 2
0
        public void KeyboardDirectionalNavigationBasicTest()
        {
            Control child1 = new Control {
                Name = "child1", Width = 100, Height = 100
            };
            Control child2 = new Control {
                Name = "child2", Width = 100, Height = 100
            };
            Control child3 = new Control {
                Name = "child3", Width = 100, Height = 100
            };
            Control child4 = new Control {
                Name = "child4", Width = 100, Height = 100
            };
            Control child5 = new Control {
                Name = "child5", Width = 100, Height = 100
            };

            Canvas.SetLeft(child1, 0);
            Canvas.SetTop(child1, 0);

            Canvas.SetLeft(child2, 400);
            Canvas.SetTop(child2, 10);

            Canvas.SetLeft(child3, 200);
            Canvas.SetTop(child3, 200);

            Canvas.SetLeft(child4, 10);
            Canvas.SetTop(child4, 400);

            Canvas.SetLeft(child5, 410);
            Canvas.SetTop(child5, 410);

            Canvas canvas = new Canvas {
                Width = 600, Height = 600, IsRootElement = true
            };

            canvas.Children.Add(child1);
            canvas.Children.Add(child2);
            canvas.Children.Add(child3);
            canvas.Children.Add(child4);
            canvas.Children.Add(child5);

            canvas.Measure(new Size(1000, 1000));
            canvas.Arrange(new Rect(1000, 1000));

            KeyboardNavigation.SetDirectionalNavigation(canvas, KeyboardNavigationMode.Contained);

            Assert.AreEqual(child1, KeyboardNavigationTarget.FindTarget(child1, FocusNavigationDirection.Left, KeyboardNavigation.DirectionalNavigationProperty));
            Assert.AreEqual(child3, KeyboardNavigationTarget.FindTarget(child1, FocusNavigationDirection.Right, KeyboardNavigation.DirectionalNavigationProperty));
            Assert.AreEqual(child1, KeyboardNavigationTarget.FindTarget(child1, FocusNavigationDirection.Up, KeyboardNavigation.DirectionalNavigationProperty));
            Assert.AreEqual(child3, KeyboardNavigationTarget.FindTarget(child1, FocusNavigationDirection.Down, KeyboardNavigation.DirectionalNavigationProperty));

            Assert.AreEqual(child3, KeyboardNavigationTarget.FindTarget(child2, FocusNavigationDirection.Left, KeyboardNavigation.DirectionalNavigationProperty));
            Assert.AreEqual(child2, KeyboardNavigationTarget.FindTarget(child2, FocusNavigationDirection.Right, KeyboardNavigation.DirectionalNavigationProperty));
            Assert.AreEqual(child2, KeyboardNavigationTarget.FindTarget(child2, FocusNavigationDirection.Up, KeyboardNavigation.DirectionalNavigationProperty));
            Assert.AreEqual(child3, KeyboardNavigationTarget.FindTarget(child2, FocusNavigationDirection.Down, KeyboardNavigation.DirectionalNavigationProperty));

            Assert.AreEqual(child4, KeyboardNavigationTarget.FindTarget(child3, FocusNavigationDirection.Left, KeyboardNavigation.DirectionalNavigationProperty));
            Assert.AreEqual(child2, KeyboardNavigationTarget.FindTarget(child3, FocusNavigationDirection.Right, KeyboardNavigation.DirectionalNavigationProperty));
            Assert.AreEqual(child2, KeyboardNavigationTarget.FindTarget(child3, FocusNavigationDirection.Up, KeyboardNavigation.DirectionalNavigationProperty));
            Assert.AreEqual(child4, KeyboardNavigationTarget.FindTarget(child3, FocusNavigationDirection.Down, KeyboardNavigation.DirectionalNavigationProperty));

            Assert.AreEqual(child4, KeyboardNavigationTarget.FindTarget(child4, FocusNavigationDirection.Left, KeyboardNavigation.DirectionalNavigationProperty));
            Assert.AreEqual(child3, KeyboardNavigationTarget.FindTarget(child4, FocusNavigationDirection.Right, KeyboardNavigation.DirectionalNavigationProperty));
            Assert.AreEqual(child3, KeyboardNavigationTarget.FindTarget(child4, FocusNavigationDirection.Up, KeyboardNavigation.DirectionalNavigationProperty));
            Assert.AreEqual(child4, KeyboardNavigationTarget.FindTarget(child4, FocusNavigationDirection.Down, KeyboardNavigation.DirectionalNavigationProperty));

            Assert.AreEqual(child3, KeyboardNavigationTarget.FindTarget(child5, FocusNavigationDirection.Left, KeyboardNavigation.DirectionalNavigationProperty));
            Assert.AreEqual(child5, KeyboardNavigationTarget.FindTarget(child5, FocusNavigationDirection.Right, KeyboardNavigation.DirectionalNavigationProperty));
            Assert.AreEqual(child3, KeyboardNavigationTarget.FindTarget(child5, FocusNavigationDirection.Up, KeyboardNavigation.DirectionalNavigationProperty));
            Assert.AreEqual(child5, KeyboardNavigationTarget.FindTarget(child5, FocusNavigationDirection.Down, KeyboardNavigation.DirectionalNavigationProperty));
        }
Esempio n. 3
0
        public void KeyboardDirectionalNavigationTransformTest()
        {
            Control child1 = new Control {
                Name = "child1", Width = 100, Height = 100, RenderTransform = new TranslateTransform(-300, 200)
            };
            Control child2 = new Control {
                Name = "child2", Width = 100, Height = 100, RenderTransform = new TranslateTransform(-290, -200)
            };
            Control child3 = new Control {
                Name = "child3", Width = 100, Height = 100, RenderTransform = new TranslateTransform(-100, 0)
            };
            Control child4 = new Control {
                Name = "child4", Width = 100, Height = 100, RenderTransform = new TranslateTransform(100, 190)
            };
            Control child5 = new Control {
                Name = "child5", Width = 100, Height = 100, RenderTransform = new TranslateTransform(110, -210)
            };

            Grid grid = new Grid
            {
                Margin          = new Thickness(100, 200, 0, 0),
                RenderTransform = new RotateTransform {
                    Angle = 90
                }
            };

            grid.Children.Add(child1);
            grid.Children.Add(child2);
            grid.Children.Add(child3);
            grid.Children.Add(child4);
            grid.Children.Add(child5);

            Decorator root = new Decorator
            {
                IsRootElement = true,
                Child         = grid,
                Margin        = new Thickness(200, 100, 0, 0),
            };

            root.Measure(Size.Infinity);
            root.Arrange(new Rect(root.DesiredSize));

            KeyboardNavigation.SetDirectionalNavigation(root, KeyboardNavigationMode.Contained);

            Assert.AreEqual(child1, KeyboardNavigationTarget.FindTarget(child1, FocusNavigationDirection.Left, KeyboardNavigation.DirectionalNavigationProperty));
            Assert.AreEqual(child3, KeyboardNavigationTarget.FindTarget(child1, FocusNavigationDirection.Right, KeyboardNavigation.DirectionalNavigationProperty));
            Assert.AreEqual(child1, KeyboardNavigationTarget.FindTarget(child1, FocusNavigationDirection.Up, KeyboardNavigation.DirectionalNavigationProperty));
            Assert.AreEqual(child3, KeyboardNavigationTarget.FindTarget(child1, FocusNavigationDirection.Down, KeyboardNavigation.DirectionalNavigationProperty));

            Assert.AreEqual(child3, KeyboardNavigationTarget.FindTarget(child2, FocusNavigationDirection.Left, KeyboardNavigation.DirectionalNavigationProperty));
            Assert.AreEqual(child2, KeyboardNavigationTarget.FindTarget(child2, FocusNavigationDirection.Right, KeyboardNavigation.DirectionalNavigationProperty));
            Assert.AreEqual(child2, KeyboardNavigationTarget.FindTarget(child2, FocusNavigationDirection.Up, KeyboardNavigation.DirectionalNavigationProperty));
            Assert.AreEqual(child3, KeyboardNavigationTarget.FindTarget(child2, FocusNavigationDirection.Down, KeyboardNavigation.DirectionalNavigationProperty));

            Assert.AreEqual(child4, KeyboardNavigationTarget.FindTarget(child3, FocusNavigationDirection.Left, KeyboardNavigation.DirectionalNavigationProperty));
            Assert.AreEqual(child2, KeyboardNavigationTarget.FindTarget(child3, FocusNavigationDirection.Right, KeyboardNavigation.DirectionalNavigationProperty));
            Assert.AreEqual(child2, KeyboardNavigationTarget.FindTarget(child3, FocusNavigationDirection.Up, KeyboardNavigation.DirectionalNavigationProperty));
            Assert.AreEqual(child4, KeyboardNavigationTarget.FindTarget(child3, FocusNavigationDirection.Down, KeyboardNavigation.DirectionalNavigationProperty));

            Assert.AreEqual(child4, KeyboardNavigationTarget.FindTarget(child4, FocusNavigationDirection.Left, KeyboardNavigation.DirectionalNavigationProperty));
            Assert.AreEqual(child3, KeyboardNavigationTarget.FindTarget(child4, FocusNavigationDirection.Right, KeyboardNavigation.DirectionalNavigationProperty));
            Assert.AreEqual(child3, KeyboardNavigationTarget.FindTarget(child4, FocusNavigationDirection.Up, KeyboardNavigation.DirectionalNavigationProperty));
            Assert.AreEqual(child4, KeyboardNavigationTarget.FindTarget(child4, FocusNavigationDirection.Down, KeyboardNavigation.DirectionalNavigationProperty));

            Assert.AreEqual(child3, KeyboardNavigationTarget.FindTarget(child5, FocusNavigationDirection.Left, KeyboardNavigation.DirectionalNavigationProperty));
            Assert.AreEqual(child5, KeyboardNavigationTarget.FindTarget(child5, FocusNavigationDirection.Right, KeyboardNavigation.DirectionalNavigationProperty));
            Assert.AreEqual(child3, KeyboardNavigationTarget.FindTarget(child5, FocusNavigationDirection.Up, KeyboardNavigation.DirectionalNavigationProperty));
            Assert.AreEqual(child5, KeyboardNavigationTarget.FindTarget(child5, FocusNavigationDirection.Down, KeyboardNavigation.DirectionalNavigationProperty));
        }