按下Enter键时,防止聚焦关闭按钮



我正在处理myDialog1_KeyDown事件,如果按下Enter键,我的方法会将焦点移动到下一个元素,如下所示:

UIElement focusedElement = Keyboard.FocusedElement as UIElement;
if (focusedElement != null)
{
    if(focusedElement.MoveFocus(newTraversalRequest(FocusNavigationDirection.Next)))
    e.Handled = true;
}

myDialog1是myDockBase对象。myDockBase是一个扩展DXWindow的类,用于应用程序中的每个模式对话框。

然后问题是,当用户位于最后一个字段时——当他按下Enter键时,焦点移动到关闭按钮(最小化和最大化按钮被隐藏),然后如果他再次按下Enter,窗口将关闭。

编辑:我想要的是:如果关闭按钮是聚焦的,不允许用户在按下回车键时关闭窗口,或者不将焦点移动到关闭按钮

解决方案可能是完全禁止关闭按钮具有焦点,假设您不需要它。请参阅Focusable属性。如果您在代码中创建按钮:closeButton.Focusable = false。如果在XAML中:<Button Focusable="false" Command="...">Close</Button>。这样,当您导航焦点时,关闭按钮不会出现在循环中。

你没有说出你期望发生的事情。您可以检查当前控件是否是最后一个字段(您必须有它的ID)。如果用户当前在最后一个字段中,则不要前进到下一个字段。

最新更新