3

UI のテキスト ボックスにコンテキスト メニューを追加する次のコードがあります。ユーザーは、コンテキスト メニューを表示して、使用する新しい単位を選択できるはずです。したがって、ビュー モデルのメソッド CurrentUnits はテキスト ボックスにバインドされます。すべての潜在的なユニットが表示されるコンテキスト メニューが必要です。したがって、私のビュー モデルの Units メソッドは、ユニット オプションの string[] を返します。インチ、cm、フィート、メートルなど。ユーザーがいずれかを選択すると、メソッド NewUnits_Click が呼び出されます。すべて正常に動作しますが、ユーザーがメニュー オプションを選択しても contextmenu は消えません。アプリケーションのメニュー バーなど、画面上の他の場所を押すと、それがクリアされます。他の誰かがこの問題を見たことがありますか、または以下のコードに何か問題がありますか? 私が持っている ItemTemplate/DataTemplate と何か関係があるようですが、

    <TextBlock Width="100" Text="{Binding CurrentUnits}" TextAlignment="Right">
        <toolkit:ContextMenuService.ContextMenu>
            <toolkit:ContextMenu ItemsSource="{Binding Units}">
                <toolkit:ContextMenu.ItemTemplate>
                    <DataTemplate>
                        <toolkit:MenuItem Header="{Binding}" Click="NewUnits_Click" />
                    </DataTemplate>
                </toolkit:ContextMenu.ItemTemplate>
            </toolkit:ContextMenu>
        </toolkit:ContextMenuService.ContextMenu>
    </TextBlock>
4

1 に答える 1

0

WPF で作業するときに MVVM を使用していない場合は、MVVM を使用することを強くお勧めします。そうでない場合でも、Click にバインドする代わりに、ICommand を実装するものを必要とする Command プロパティにバインドすることをお勧めします。あなたが得ている動作は意図されていると思います.WPFのボタンとメニュー項目はコマンドにバインドすることを目的としています.WinForms 2.0だけではありません.

別の解決策は、コード ビハインドでコンテキスト メニューを非表示にすることです。おそらく、このリソースはそれを達成するのに役立ちます。

于 2013-07-01T10:29:12.013 に答える