在Window加载(或者Window本身被激活)时,它都会用类似的代码让Window中的逻辑焦点元素获得焦点。
DependencyObject doContent = Content as DependencyObject; if (doContent != null) { IInputElement focusedElement = FocusManager.GetFocusedElement(doContent) as IInputElement; if (focusedElement != null) focusedElement.Focus(); } 4. 结语其实没有这个类也可以,反正代码简单,只是想通过这个类介绍下附加属性和Focus的用法。
做自定义控件要做好焦点管理,尤其是现在,因为很多设计师、产品经理、开发者都有丰富的手机应用开发设计经验,由于手机上的键盘导航逻辑和桌面应用的有些出入,所以键盘导航的细节很容易被忽视。
不过,通常来说用着用着觉得不顺手就会有人提出需求,细心的开发者总会渐渐把键盘导航做好。
5. 参考焦点概述 Microsoft Docs
FocusManager Class (System.Windows.Input) Microsoft Docs
Keyboard.Focus(IInputElement) Method (System.Windows.Input) Microsoft Docs
6. 源码Kino.Toolkit.Wpf_FocusService.cs