我有一种非常奇怪的行为,我希望有人可以帮助我。
我有以下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>
请注意,两个按钮都注册了相同的事件。
Details_Click
事件如下所示:
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;
}
现在我遇到了这个问题,即使我按下Menu
内的按钮时,窗口上方的所有代码都没有显示,但外面只有.Activate();
。
(我怎么知道窗口没有被激活:需要2次点击才能关闭/最小化/最大化它)
为什么我的XAML布局会破坏DictionaryViewer();
窗口的激活,按钮在 Menu
内?
(根据你的信息,DictionaryViewer完全是空的,它还没有实现新的窗口)
修改
是的,我知道有MenuItem_Click
事件可能会让它发挥作用,但我需要/想要菜单中的按钮如何解决这个问题?
答案 0 :(得分:1)
之所以发生这种情况,是因为在Window打开后,MenuItem中的Button正在获得焦点。
如果在MenuItem中设置按钮的Focusable属性,则可以解决问题。
E.g。
<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>