WPF 应用程序交叉 (X) 按钮在单击时不起作用

本文关键字:按钮 单击 不起作用 应用程序 WPF | 更新日期: 2023-09-27 18:25:40

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

最初发生的事情是我在加载窗口时将焦点设置为菜单项,因此当我首先单击十字(X(按钮时,菜单项中的焦点被删除,然后在第二次单击应用程序十字(x(按钮时起作用。

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

但是当我不设置"菜单项焦点"时,十字按钮只需单击一下即可工作。

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

我想将焦点设置在菜单项上,并希望红十字(X(按钮在单击时执行。

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

WPF 应用程序交叉 (X) 按钮在单击时不起作用

我同意这种行为正在发生......MenuItem与具有专注力的Button不同。@Samuel,FocusManager.IsFocusScope在这里没有效果。当Menu聚焦时,它甚至可以阻止窗口移动或重新调整大小,更不用说单击其任何Button了。

我尝试实现其他事件,例如MouseLeaveLostFocus(在窗口上(,所有这些都无法更改此重点MenuItem

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

您在 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 来解决此问题,这将如何产生一些可用性问题,因为菜单在自己的逻辑范围内工作得更好。