如何在应用程序的任何地方丢失键盘范围?

时间:2014-08-18 14:42:30

标签: c# wpf xaml mvvm focus

我有一个委托命令,当调用时,我想失去对任何具有焦点的控件的注意力。我正在使用MVVM,因此委托命令执行中的代码没有引用UIElements。我很乐意转移焦点或使用任何类型的技巧 - 但它需要与哪个控件关注点有些不可知。

如果解决方案是在XAML或C#中,请不要介意。

1 个答案:

答案 0 :(得分:1)

也许您应该使用TraversalRequest class将焦点移动到下一个控件?从链接页面,它:

  

表示将焦点移至另一个控件的请求。

所有你需要让它工作的是目前关注的元素。再次,从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);
}
相关问题