1

WPF でメニューを作成するときに問題があります。マウスボタンを押すのをやめると、自動的に閉じます。クリックできる通常のメニューのように動作させたいのですが、サブアイテムが表示されたままになりますが、とにかくこれを行う方法が見つかりません。

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

<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 アドイン プロジェクトから WPF ウィンドウを開こうとすると、この問題が発生します。

4

2 に答える 2

1

Ok!問題を解決しました。結局、それはフォーカスの問題でした。Excel アドインが WPF ウィンドウを実行したとき、Excel ウィンドウはまだフォーカスされていました。したがって、マウスアップのたびに、フォーカスが WPF から Excel に戻ります。

私がしなければならなかったのは、実行をこれから変更することだけでした:

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

これに:

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

とにかく助けてくれてありがとう!

于 2011-07-22T09:42:03.197 に答える
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>
于 2011-07-20T07:59:54.247 に答える