C# 如何在应用程序中的任何位置丢失键盘作用域?

C# 如何在应用程序中的任何位置丢失键盘作用域?,c#,wpf,xaml,mvvm,focus,C#,Wpf,Xaml,Mvvm,Focus,我有一个委托命令,当调用该命令时,我希望在任何具有焦点的控件上失去焦点。我使用的是MVVM,因此委托命令的execute中的代码没有对UIVM元素的引用。我很乐意转移焦点或使用任何技巧来实现这一点,但它需要有点不可知的控制有焦点 不介意解决方案是XAML还是C#。也许您应该使用将焦点移动到下一个控件?在链接页面中,它将: 表示将焦点移动到另一个控件的请求 你需要做的就是找到当前关注的元素。同样,从MSDN上的链接页面: // Creating a FocusNavigationDirection

我有一个委托命令,当调用该命令时,我希望在任何具有焦点的控件上失去焦点。我使用的是MVVM,因此委托命令的execute中的代码没有对UIVM元素的引用。我很乐意转移焦点或使用任何技巧来实现这一点,但它需要有点不可知的控制有焦点


不介意解决方案是XAML还是C#。

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

表示将焦点移动到另一个控件的请求

你需要做的就是找到当前关注的元素。同样,从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);
}