0

mvvmを使用してwpfで汎用コンテキストメニューを開発したいと思います。ItemContainerStyle ="{DynamicResourceListViewItemContainerStyle}"というスタイルのリストビューを持つ各viewModelに表示したいと思います。

コンテキストメニューには、各ビューモデルのいくつかの制約に応じて有効または無効になる2つのオプションがあります。有効かどうかは、コマンドのcanexecuteによって管理されます。

リストビュー内の各ビューに配置しても問題ありませんが、各リストビュー以外の1か所にのみ配置したいと思います。ListViewItemContainerStyleに入れようとしましたが、「System.Windows.Controls.ContextMenuをSystem.Objectに追加できません」という例外が表示されます。これが私のコードスニペットです

<Style x:Key="ListViewItemContainerStyle"
       TargetType="ListViewItem">
   .
   .
   .
    <Setter Property="ContextMenu">
        <Setter.Value>
            <ContextMenu>
                <MenuItem Command="{Binding Path=Command}"
                          CommandParameter="AddNew">
                    <MenuItem.Header>
                        <TextBlock Text="{x:Static p:TextResources.New}" />
                    </MenuItem.Header>
                </MenuItem>
                <MenuItem Command="{Binding Path=Command}"
                          CommandParameter="Delete">
                    <MenuItem.Header>
                        <TextBlock Text="{x:Static p:TextResources.Delete}" />
                    </MenuItem.Header>
                </MenuItem>
            </ContextMenu>
        </Setter.Value>
    </Setter>
 .
 .
 .

これを行う方法のアイデアはありますか?

4

1 に答える 1

0

これを試して:

<ContextMenu x:Shared="False" x:Key="ListViewContextMenu>
                <MenuItem Command="{Binding Path=Command}"
                          CommandParameter="AddNew">
                    <MenuItem.Header>
                        <TextBlock Text="{x:Static p:TextResources.New}" />
                    </MenuItem.Header>
                </MenuItem>
                <MenuItem Command="{Binding Path=Command}"
                          CommandParameter="Delete">
                    <MenuItem.Header>
                        <TextBlock Text="{x:Static p:TextResources.Delete}" />
                    </MenuItem.Header>
                </MenuItem>
            </ContextMenu>

<Style x:Key="ListViewItemContainerStyle"
       TargetType="ListViewItem">
    <Setter Property="ContextMenu" Value="{StaticResource ListViewContextMenu}"/>
于 2013-03-11T14:11:30.217 に答える