我有一个WPF应用程序,我面临的问题是我的应用程序没有在单交叉(X)按钮单击时关闭。 我可能知道原因 -
最初发生的事情是我在加载窗口时将Focus设置为MenuItem,所以当我单击Cross(X)按钮时,首先从MenuItem中移除焦点,然后在第二次单击应用程序Cross(x)按钮工作时
private void Window_Loaded(object sender, RoutedEventArgs e)
{
MenuItem1.Focus();
}
但是当我没有在MenuItem上设置Focus时,单击一下就可以使用Cross按钮。
private void Window_Loaded(object sender, RoutedEventArgs e)
{
// MenuItem1.Focus();
}
我想将焦点设置在MenuItem上,并希望红色十字(X)按钮在singleClick上执行..
他们以任何方式可以实现这种情况.. ???
答案 0 :(得分:1)
我同意这种情况正在发生...... MenuItem
与焦点Button
不同。 @Samuel,FocusManager.IsFocusScope
在这里没有效果。当Menu
被聚焦时,它甚至会阻止窗口被移动或重新调整大小,更不用说点击任何Button
了。
我尝试实施其他活动,例如MouseLeave
和LostFocus
(在窗口上),但无法更改此焦点MenuItem
。
我不知道为什么Farzi希望自动聚焦,但我认为这是一个坏主意。也许Farzi想要的是以不同的方式实现的?也许暂时将MenuItem.Background
着色?
答案 1 :(得分: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来解决此问题,但这会产生一些可用性问题,因为菜单可以更好地使用自己的逻辑范围。