我正在处理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)。如果用户当前在最后一个字段中,则不要前进到下一个字段。