Wpf应用程序交叉(X)按钮不能单击

时间:2013-07-31 06:15:38

标签: c# wpf buttonclick

我有一个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上执行..

他们以任何方式可以实现这种情况.. ???

2 个答案:

答案 0 :(得分:1)

我同意这种情况正在发生...... MenuItem与焦点Button不同。 @Samuel,FocusManager.IsFocusScope在这里没有效果。当Menu被聚焦时,它甚至会阻止窗口被移动或重新调整大小,更不用说点击任何Button了。

我尝试实施其他活动,例如MouseLeaveLostFocus(在窗口上),但无法更改此焦点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来解决此问题,但这会产生一些可用性问题,因为菜单可以更好地使用自己的逻辑范围。