我在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();
但这也行不通。
有人知道我做错了什么吗?
2条答案
按热度按时间ezykj2lf1#
我会建议用不同的方式解决这个问题,因为 * 主动失去焦点 * 不是一个很好的主意(看起来你正在解决一个完全不同的问题,更根本的问题),但如果你真的想这样做,这是如何:
(Put这段代码到你的Window_MouseDown或其他)
li9yvcax2#
也可以尝试textbox控件的PreviewLostKeyboardFocus事件。当您单击同一窗体上的另一个用户控件或该控件之外的任何位置时,它都会触发。