Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 提示/想法如何获得通用上下文菜单?_C#_.net_Wpf_Mvvm_Contextmenu - Fatal编程技术网

C# 提示/想法如何获得通用上下文菜单?

C# 提示/想法如何获得通用上下文菜单?,c#,.net,wpf,mvvm,contextmenu,C#,.net,Wpf,Mvvm,Contextmenu,我想用mvvm在wpf中开发一个通用的上下文菜单。我希望在具有样式为ItemContainerStyle=“{DynamicResource ListViewItemContainerStyle}”的listview的每个viewModel中显示它 关联菜单将有两个选项,将根据每个视图模型中的某些约束启用或不启用。是否启用将由命令的canexecute管理 如果我将它放在listview中的每个视图中,我没有问题,但是我希望它只放在每个listview之外的一个位置。我试图将其放入ListVie

我想用mvvm在wpf中开发一个通用的上下文菜单。我希望在具有样式为ItemContainerStyle=“{DynamicResource ListViewItemContainerStyle}”的listview的每个viewModel中显示它

关联菜单将有两个选项,将根据每个视图模型中的某些约束启用或不启用。是否启用将由命令的canexecute管理

如果我将它放在listview中的每个视图中,我没有问题,但是我希望它只放在每个listview之外的一个位置。我试图将其放入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>
 .
 .
 .

.
.
.
.
.
.

你知道怎么做吗?

试试这个:

<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}"/>

现在我的问题是绑定到模型,而不是viewmodel,因此命令不会执行。非常感谢。