1

在 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扩展UserControl并有IsFocusable=true任何想法有什么问题吗?

4

2 回答 2

2

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

         FocusManager.FocusedElement=editor;
于 2010-12-06T12:19:48.767 回答
2

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

于 2010-12-06T13:14:45.130 回答