我遇到了UserControl的LostFocus事件的问题。
我在网上找到了几个解决方案,但它们似乎对我不起作用。
我的UserControl有这样的行为:
<dxmvvm:EventToCommand PassEventArgsToCommand="True"
Command="{Binding LostFocusCommand}"
EventName="LostKeyboardFocus">
<dxmvvm:EventToCommand.EventArgsConverter>
<dx:EventArgsToDataRowConverter />
</dxmvvm:EventToCommand.EventArgsConverter>
</dxmvvm:EventToCommand>
Command只设置一个标志:
private void ExecuteLostFocusCommand(object obj)
{
var viewModel = obj as ITreeViewLeafViewModel;
if (viewModel != null)
{
viewModel.IsEditing = false;
}
}
当我点击另一个UserControl时,这是有效的。但是当我点击一个空白区域时,我希望拿着UserControl的Window会得到焦点而我的UserControl会失去它。但即使我为Window设置Focusable="True"
,也不会发生这种情况。我还尝试处理窗口的MouseDown
并将窗口聚焦在那里:
((Window) sender).Focus();
但这也行不通。
有谁知道我做错了什么?
答案 0 :(得分:2)
我建议以不同的方式解决这个问题,因为主动失去焦点并不是一个非常好的主意(看起来你正在解决一个完全不同的,更基本的问题),但如果你真的想要这样做,这就是:
(将此片段放入Window_MouseDown或其他任何内容)
FocusManager.SetFocusedElement(this, null);
Keyboard.ClearFocus();