如何在应用程序的任何地方丢失键盘作用域
本文关键字:方丢失 键盘 作用域 任何地 应用程序 | 更新日期: 2023-09-27 18:18:25
我有一个委托命令,当调用时,我想失去对任何有焦点的控件的焦点。我使用MVVM,因此在委托命令的执行代码没有引用ui元素。我很乐意移动焦点或使用任何一种技巧来实现这一点,但它需要在某种程度上不知道哪个控制有焦点。
不要介意解决方案是用XAML还是c#。
也许您应该使用TraversalRequest
类将焦点移动到下一个控件?从链接页面,它:
表示将焦点移动到另一个控件的请求。
所有你需要让它工作的是当前聚焦的元素。同样,来自MSDN上的链接页面:
// Creating a FocusNavigationDirection object and setting it to a
// local field that contains the direction selected.
FocusNavigationDirection focusDirection = _focusMoveValue;
// MoveFocus takes a TraveralReqest as its argument.
TraversalRequest request = new TraversalRequest(focusDirection);
// Gets the element with keyboard focus.
UIElement elementWithFocus = Keyboard.FocusedElement as UIElement;
// Change keyboard focus.
if (elementWithFocus != null)
{
elementWithFocus.MoveFocus(request);
}