2011-07-20 35 views
1

在WPF中创建菜单时出现问题。发生的是当你停止按下鼠标按钮时它会自动关闭。我希望它的行为与常规菜单一样,您可以点击并且子项目会保持不变,但是我无法找到完成此项的操作。从excel插件项目打开窗口时,WPF菜单在mouseup上关闭

的代码看起来是这样的:

<Window x:Class="ExcelAddIn.MyWindow" 
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
      xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
      xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
      mc:Ignorable="d" 
      d:DesignHeight="300" d:DesignWidth="300"> 
     <Grid> 
      <DockPanel> 
       <Menu Width="Auto" IsMainMenu="True" > 
        <MenuItem Header="Item"> 
         <MenuItem Header="SubItem" /> 
        </MenuItem> 
       </Menu> 
      </DockPanel> 
     </Grid> 
</Window> 

我不知道是否有什么关系,也许逻辑焦点?我看到一些关于它可能是.NET框架中的错误?有任何想法吗?

在此先感谢

我没想到这让起初任何区别,但显然它。当在独立的WPF应用程序中运行代码时,它可以工作,但是当我尝试从Excel-addin项目打开WPF窗口时,出现此问题。

+0

您的菜单按预期工作。你点击菜单标题并打开子菜单。您点击其他任何地方并关闭子菜单。你想如何工作? –

+0

我不太清楚对不起。我的意思是,当我按住鼠标按钮时,所有的东西都能正常工作。但是,如果我点击一个menuitem(mousedown +向上),我想要打开菜单(通常情况下),但即使我留在menuitem上,它也会在mouseup上关闭。你明白吗? – user853438

+0

好的。谢谢回复。然而,它仍然适用于我,因为你想让它工作。所以它应该是你的窗口或代码中的其他东西。 –

回答

1

好的!我解决了这个问题。毕竟这是一个焦点问题。 当excel插件执行WPF窗口时,excel窗口仍处于焦点状态。所以在每个mouseup上,焦点都会从WPF跳回到excel。

我所要做的就是改变这个执行:

MainWindow mainWindow = new MainWindow(); 
mainWindow.Activate(); 
mainWindow.Show(); 

这样:

MainWindow mainWindow = new MainWindow(); 
mainWindow.Activate(); 
mainWindow.ShowDialog(); 

感谢您的帮助反正家伙!

+0

这是推荐解决方案的一个焦点问题。查看我对相关问题的回答http://stackoverflow.com/a/8412768/233095 –

0

我调整了一小段代码(DockPanel.Dock="Top"和一个额外的网格以填充码头面板的其余部分)。它工作正常,菜单保持打开状态。它是否适合你?:

<Window x:Class="WpfApplication2.Window3" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="Window3" Height="300" Width="300"> 
    <Grid> 
     <DockPanel> 
      <Menu Width="Auto" 
        IsMainMenu="True" DockPanel.Dock="Top"> 
       <MenuItem Header="Item"> 
        <MenuItem Header="SubItem" /> 
       </MenuItem> 
      </Menu> 
      <Grid /> 
     </DockPanel> 
    </Grid> 
</Window> 
+0

不,还是同样的问题:/ – user853438

+0

你的应用程序中是否有任何代码? –

+0

是的,它有所作为,我编辑了这个问题。 – user853438