2010-12-06 67 views
1

在WPF 4.0中,如果我在加载后在窗口中交换用户控件,我似乎无法获得任何键盘快捷键的工作。一个代码示例胜过千言万语,所以这里是我在做什么:WPF 4键盘焦点:从来没有收到关键事件

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任何想法有什么不对?

回答

2

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

+0

这个工作;谢谢! – 2010-12-07 08:19:43

2

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

  FocusManager.FocusedElement=editor;