2

1 つのページで 2 つの異なるメニュー間で共有したい定義済みの MenuItem があります。メニューには、両方のメニューで同じ機能が含まれており、2 つのコピーは必要ありません。Page.Resources で MenuItem を定義し、以下の ContextMenu XAML で参照する方法はありますか?

<Page.Resources>
    <MenuItem x:Key="123"/>
</Page.Resources>

<ContextMenu>
    <MenuItem>Something hardcoded</MenuItem>

    <!-- include shared menu here -->

</ContextMenu>
4

3 に答える 3

6

メニュー項目自体に x:Shared="False" を設定することでこれを行いました。リソースは、デフォルトでそれらを使用する各場所間で共有される (すべての使用で 1 つのインスタンスを意味する) ため、これをオフにすると、リソースの新しい「コピー」が毎回作成されることを意味します。

そう:

<MenuItem x:Key="myMenuItem" x:Shared="False" />

その「コピー」を取得することはできますが、定義する必要があるのは 1 か所だけです。それが役立つかどうかを確認してください。メニュー定義内で次のように使用します。

<StaticResource ResourceKey="myMenuItem" />
于 2008-09-29T21:15:27.830 に答える
1

組み合わせたいので... 「SharedMenuItems」依存プロパティと MenuItems 依存プロパティを持つ ContextMenu から継承するカスタム コントロールを作成します。このようにして、コントロールはこれら 2 つのセットをマージする方法を決定できます。この例が必要な場合は、お知らせください。

于 2008-09-29T19:17:12.700 に答える
0

いくつかのオプション: a) ContextMenu または Menu を同じ基礎となるコレクションにデータバインドし、項目テンプレートなどを作業に使用する b) コマンドを使用し、一連のコマンド バインドにデータバインドする

于 2008-09-30T04:42:31.623 に答える