‘在 WPF 中,有兩個與焦點有關的主要概念:鍵盤焦點和邏輯焦點。 鍵盤焦點指接收鍵盤輸入的元素,而邏輯焦點指焦點範圍中具備焦點的元素。 本概述將詳細介紹這些概念。 理解這些概念之間的區別對於建立具備能夠獲取焦點的多個區域的複雜應用程序是很是重要的。’ 摘自 Microsoft MSDN 焦點概述app
一直以來,我寫的項目都有鍵盤焦點的問題,好比 Click 了一個 Button 之後出現下次按回車還會觸發 Click ,還有就是 TextBox 輸入完成後想把鍵盤焦點轉移到其餘非 TextBox 輸入框的控件上。ui
後面在解決這個問題的過程當中看到一篇在 stackoverflow 上的提問,發現了能夠使用 Keyboard 和 FocusManager 來移動焦點。this
C#:spa
1 private void Focus(bool value) 2 { 3 if (value) 4 Dispatcher.BeginInvoke(DispatcherPriority.Input,new Action(delegate () 5 { 6 Keyboard.ClearFocus(); //清空鍵盤焦點 7 FocusManager.SetFocusedElement(this, null); //將邏輯焦點移動主窗體 8 Keyboard.Focus(this); //將鍵盤焦點已到主窗體 9 })); 10 }
引用code
https://msdn.microsoft.com/zh-cn/library/aa969768(v=vs.110).aspxblog