0

我有一个 WPF 应用程序,我面临的问题是我的应用程序在单击一次十字(X)按钮时没有关闭。可能我知道原因——

最初发生的事情是我在加载窗口时将 Focus 设置为 MenuItem,所以当我首先单击 Cross(X) 按钮时,MenuItem 的焦点被删除,然后在第二次单击应用程序 Cross(x) 按钮时起作用。

private void Window_Loaded(object sender, RoutedEventArgs e)
{
    MenuItem1.Focus();               
}

但是当我没有在 MenuItem 上设置焦点时,Cross 按钮可以单击一次。

private void Window_Loaded(object sender, RoutedEventArgs e)
{
    // MenuItem1.Focus();                 
}

我想将焦点设置在 MenuItem 上,并希望 Red Cross(X) 按钮在 singleClick 上执行。

他们有什么办法可以实现这种情况..???

4

2 回答 2

1

我同意这种行为正在发生...... aMenuItemButton专注不同。@Samuel,FocusManager.IsFocusScope这里没有效果。当sMenu被聚焦时,它甚至会阻止窗口被移动或调整大小,更不用说Button点击它的任何一个了。

我尝试实现其他事件,例如MouseLeaveand LostFocus(在窗口上),但都无法更改此焦点MenuItem

我不知道 Farzi 为什么希望它自动聚焦,但我认为这是一个坏主意。也许 Farzi 想要的可以通过不同的方式实现?也许暂时给它上色MenuItem.Background

于 2013-07-31T09:20:20.473 回答
0

您遇到了 FocusManager 提供的逻辑范围的问题。请参阅http://msdn.microsoft.com/en-us/library/aa969768.aspx

以下是焦点范围的相关问题和解释:http ://social.msdn.microsoft.com/Forums/vstudio/en-US/f5de6ffc-fa03-4f08-87e9-77bbad752033/a-focusscope-nightmare-bug-commands -are-disabled 您可以通过在菜单上将 FocusManager.IsFocusScope 设置为 false 来解决此问题,但是这会产生一些可用性问题,因为菜单在自己的逻辑范围内工作得更好。

于 2013-07-31T08:41:37.497 回答