3

文字列の配列があります。これらの文字列ごとに、個別のxaml要素(<menuitem>外部ライブラリからのもの)を作成したいと思います。

<MenuItem Header="Update">
  <MenuItem Header="arrayvalue1" Command="{Binding UpdateCommand}" />
  <MenuItem Header="arrayvalue2" Command="{Binding UpdateCommand}" />
  <MenuItem Header="arrayvalue3" Command="{Binding UpdateCommand}" />
</MenuItem>

3つの要素をハードコーディングする代わりに、文字列の配列からこれらを作成したいと思います。

これは可能ですか?もしそうなら、どのように?

4

2 に答える 2

3

MenuItemはItemsControlであるため、任意のコレクションをItemsSourceプロパティにバインドでき、子が生成されます。MenuItemの場合、生成される子もMenuItemです。これらの子のプロパティにバインドされた値を適用するには、それぞれに適用されるItemContainerStyleを設定できます。使用するコマンドは最上位のDataContextにあるため、より多くの間接バインディングを使用する必要があります。これは、使用しているテクノロジーによって異なる場合があります。WPFの検索方法は次のとおりです。

        <MenuItem Header="Update" ItemsSource="{Binding Strings}">
            <MenuItem.ItemContainerStyle>
                <Style TargetType="{x:Type MenuItem}">
                    <Setter Property="Command" Value="{Binding Path=DataContext.UpdateCommand, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Menu}}}" />
                    <Setter Property="Header" Value="{Binding}" />
                </Style>
            </MenuItem.ItemContainerStyle>
        </MenuItem>
于 2013-01-28T17:43:41.533 に答える
1

あなたが探しているものはItemsControlと呼ばれています。ItemTemplateを追加することで、好きな形でたくさんのアイテムを表示するために使用できます。

于 2013-01-28T17:42:55.357 に答える