2010-12-06 80 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;