1

XAML のいくつかの場所で再利用したい WPF サブメニューがあります。<MenuItem>これは、コピー/貼り付けしたくないいくつかの複雑なバインドを持つ8 つの要素のコレクションです。ただし、所有者はそれぞれの場合で異なります。ある場所では親は a<Menu>であり、別の場所では親は a<MenuItem>です<ContextMenu>

私は<Setter Property="Items">自分で実験してきましたが<Style>、おそらく間違った方向に進んでいると思います。

具体的にするために、次のようなコードの重複を削減しようとしています。

<Menu>
    <MenuItem Header="Details"    IsCheckable="True" ... />
    <MenuItem Header="List"       IsCheckable="True" ... />
    <MenuItem Header="Thumbnails" IsCheckable="True" ... />
    ...
</Menu>
...
<ContextMenu>
    <MenuItem Header="View">
        <MenuItem Header="Details"    IsCheckable="True" ... />
        <MenuItem Header="List"       IsCheckable="True" ... />
        <MenuItem Header="Thumbnails" IsCheckable="True" ... />
        ...
    </MenuItem>
</ContextMenu>
4

1 に答える 1

2

このようなものはどうですか:

リソース ディクショナリに次のコレクションを作成する必要があります。

<Collections:ArrayList x:Key="MenuItems" x:Shared="false">
    <MenuItem Header="Details" />
    <MenuItem Header="List" />
    <MenuItem Header="Thumbnails" />
</Collections:ArrayList>

次の名前空間を追加する必要があります。

xmlns:Collections="clr-namespace:System.Collections;assembly=mscorlib"

...

そして、コレクションを使用するだけです:

<Menu ItemsSource="{StaticResource MenuItems}" />

...

<ContextMenu>
    <MenuItem Header="View" ItemsSource="{StaticResource MenuItems}" />
</ContextMenu>
于 2012-11-29T17:16:37.027 に答える