C# 打开窗口激活不使用菜单内的按钮

C# 打开窗口激活不使用菜单内的按钮,c#,wpf,xaml,C#,Wpf,Xaml,我有一个非常奇怪的行为,我希望有人能帮助我 我有以下XAML布局: <StackPanel Orientation="Horizontal"> <Menu> <Menu.Items> <MenuItem Padding="2,0,2,0"> <MenuItem.Header> <Button Content="D

我有一个非常奇怪的行为,我希望有人能帮助我

我有以下XAML布局:

<StackPanel Orientation="Horizontal">
    <Menu>
        <Menu.Items>
            <MenuItem Padding="2,0,2,0">
                <MenuItem.Header>
                    <Button Content="Details"
                            Click="Details_Click" />
                </MenuItem.Header>
            </MenuItem>
        </Menu.Items>
    </Menu>
    <Button Content="Details"
            Click="Details_Click" />
</StackPanel>
现在我面临着这个问题,即使上面的所有代码都被激活了,当我按下
菜单中的按钮时,窗口也不会显示为激活状态,但在它的外部,只使用
.Activate()。
(我如何知道该窗口未激活:需要单击两下才能关闭/最小化/最大化它)

为什么我的XAML布局会破坏
DictionaryViewer()的激活窗口,按钮
菜单内

(据您所知,DictionaryView完全为空,它是一个新窗口,尚未实现任何功能)

编辑:


是的,我知道有
菜单项\u Click
事件可能会使它工作,但我需要/想要菜单中的按钮如何解决此问题?

发生这种情况的原因是菜单项中的按钮在窗口打开后获得焦点

如果在MenuItem中设置按钮的Focusable属性,则可以解决此问题

例如



为什么要将最上面的设置为true而不是false?我认为菜单可以处理一些事件,并在菜单项打开后获得焦点clicked@MichalCiechan从这里得到的,因为我现在搜索了一段时间,不知道为什么它不工作,而且自从我将按钮移到菜单外的5分钟后,我处于WTF模式…@verdesrobert您将如何修复它?我认为您不应该处理按钮。单击菜单内的,但使用菜单事件来决定行为。我有一个类似的问题,我不理解为什么窗口正在聚焦,窗口是否不会出现在前景中?此外,这个问题似乎是随机的,因为有时应用程序/窗口会出现在前台,而有时它会出现在其他窗口后面…@m4gik问一个问题并指向它,我会尝试看一看
private void Details_Click(object sender, RoutedEventArgs e)
{
    var viewer = new DictionaryViewer();
    viewer.ShowActivated = true;
    viewer.Show();
    viewer.Topmost = true;
    viewer.Topmost = false;
    viewer.Activate();
    viewer.Focus();
    e.Handled = true;
    return;
}
<StackPanel Orientation="Horizontal">
    <Menu>
        <Menu.Items>
            <MenuItem Padding="2,0,2,0">
                <MenuItem.Header>
                    <Button Content="Details"
                            Click="Details_Click"
                            Focusable="False" />
                </MenuItem.Header>
            </MenuItem>
        </Menu.Items>
    </Menu>
    <Button Content="Details"
            Click="Details_Click" />
</StackPanel>