键盘焦点滞后
本文关键字:滞后 焦点 键盘 | 更新日期: 2023-09-27 18:15:06
我正在WPF中构建一个应用程序。它由一个复杂的背景(包含3000个矩形的画布)和五个按钮组成。唯一的"可聚焦"answers"可见"元素是五个按钮。我遇到了一个问题,如果我使用标签定位并聚焦最后一个元素,那么在按下标签和再次聚焦第一个元素之间会有明显的延迟。我能做些什么而不需要删除我的背景吗?
for (int i = 0; i < max; ++i)
{
Rectangle rectangle = new Rectangle();
rectangle.Width = 60;
rectangle.Height = 60;
rectangle.Fill = new SolidColorBrush (Color.FromArgb
((byte) random.Next (0, 12), 255, 255, 255));
Canvas.SetLeft (rectangle, x * 30 - 5);
Canvas.SetTop (rectangle, y * 30 - 5);
uiCanvasBackground.Children.Add (rectangle);
}
我将创建更多轻量级对象,如System.Windows.Media.DrawingVisual对象,并在绘图上下文中绘制矩形。这些将驻留在一个框架元素中,作为ItemsControl。
这篇很棒的文章描述了如何实现一个有效的ItemsControl:编写更高效的ItemsControls
我已经在你的代码中添加了两行,我希望这将解决你的问题:
for (int i = 0; i < max; ++i)
{
Rectangle rectangle = new Rectangle();
rectangle.Width = 60;
rectangle.Height = 60;
// I added the following two lines
rectangle.Focusable = false;
rectangle.SetValue(KeyboardNavigation.IsTabStopProperty, false);
rectangle.Fill = new SolidColorBrush(Color.FromArgb((byte)random.Next(0, 12), 255, 255, 255));
Canvas.SetLeft(rectangle, x * 30 - 5);
Canvas.SetTop(rectangle, y * 30 - 5);
uiCanvasBackground.Children.Add(rectangle);
}
如果它与选项卡相关,则尝试设置附加的KeyboardNavigation。将Canvas上的TabNavigation设置为None,以便框架在计算制表位时跳过Canvas及其后代。