2011-07-20 11 views
1

WPFでメニューを作成するときに問題があります。マウスボタンの押下を止めると、自動的に閉じます。私はそれが普通のメニューのように振る舞い、あなたがクリックすることができ、サブアイテムが起き続けることを望みますが、私はこれを行うためにとにかく見つけることができません。WPFメニューは、Excelアドインプロジェクトからウィンドウが開いているときにマウスアップで閉じます

コードは次のようになります。

<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

私は十分にごめんなさい。私が言いたいのは、マウスボタンを押したままにすると、すべてが正常に動作するということです。しかし、私はメニューアイテムをクリックすると(mousedown + up)、私はメニューアイテムを開いて(通常は)マウスアイテムを閉じると閉じます。わかりますか? – user853438

+0

返信いただきありがとうございます。しかし、それはあなたがそれを働かせたいと思っているので、まだ私のために働く。だからあなたのウィンドウやコードには他のものが必要です。 –

答えて

1

私はこの問題を解決しました。結局のところ焦点の問題だったことが分かります。 ExcelアドインがWPFウィンドウを実行すると、Excelウィンドウにまだフォーカスがあります。だから、すべてのマウスアップで、フォーカスは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

関連する問題