WPF 4键盘焦点:从不接收关键事件

时间:2010-12-06 11:55:15

标签: c# wpf focus keyboard-shortcuts wpf-4.0

在WPF 4.0中,如果在加载后在窗口中交换用户控件,我似乎无法使用任何键盘快捷键。一个代码示例说了千言万语,所以这就是我正在做的事情:

Window window = new Window { Width = 800, Height = 600 };
window.Loaded += delegate
{
    editor = new EditorRoot();
    window.Content = editor;
};
app.Run(window);

window获取KeyDown事件(并且路由命令正常工作),但editor永远不会获得任何键盘事件(也不会在其中进行任何控制)。我试过了:

editor.Loaded += (sender, e) => Keyboard.Focus(editor);

......但那没有做任何事情。 EditorRoot延伸UserControlIsFocusable=true任何想法有什么不对?

2 个答案:

答案 0 :(得分:2)

也许你可以试试FocusManager而不是你的方法。我使用它并且它可以工作,你甚至可以在XAML中使用它:

         FocusManager.FocusedElement=editor;

答案 1 :(得分:2)

如果这不起作用 - 请使用Dispatcher.BeginInvoke。根据我的经验 - 同步设置焦点并不总是有效。而且不仅仅是在WPF 4中。