未激发UserControl的WPF LostFocus

8aqjt8rx  于 12个月前  发布在  其他
关注(0)|答案(2)|浏览(125)

我在UserControl的LostFocus事件中遇到了问题。
我在网上找到了几个解决方案,但它们似乎对我不起作用。
我的UserControl有这样的行为:

<dxmvvm:EventToCommand PassEventArgsToCommand="True"
                       Command="{Binding LostFocusCommand}"
                       EventName="LostKeyboardFocus">
    <dxmvvm:EventToCommand.EventArgsConverter>
        <dx:EventArgsToDataRowConverter />
    </dxmvvm:EventToCommand.EventArgsConverter>
</dxmvvm:EventToCommand>

命令只是设置一个标志:

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();

但这也行不通。
有人知道我做错了什么吗?

ezykj2lf

ezykj2lf1#

我会建议用不同的方式解决这个问题,因为 * 主动失去焦点 * 不是一个很好的主意(看起来你正在解决一个完全不同的问题,更根本的问题),但如果你真的想这样做,这是如何:
(Put这段代码到你的Window_MouseDown或其他)

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

li9yvcax2#

也可以尝试textbox控件的PreviewLostKeyboardFocus事件。当您单击同一窗体上的另一个用户控件或该控件之外的任何位置时,它都会触发。

PreviewLostKeyboardFocus="txtDesnActArea_LostFocus"

相关问题