用户控件的WPF LostFocus没有被触发

时间:2017-01-19 12:03:23

标签: c# wpf

我遇到了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();

但这也行不通。

有谁知道我做错了什么?

1 个答案:

答案 0 :(得分:2)

我建议以不同的方式解决这个问题,因为主动失去焦点并不是一个非常好的主意(看起来你正在解决一个完全不同的,更基本的问题),但如果你真的想要这样做,这就是:

(将此片段放入Window_MouseDown或其他任何内容)

FocusManager.SetFocusedElement(this, null);
Keyboard.ClearFocus();