提示/想法我如何得到一个通用的上下文菜单
本文关键字:一个 菜单 上下文 何得 提示 | 更新日期: 2023-09-27 18:03:23
我想开发一个通用的上下文菜单在wpf与mvvm。我想显示它在每个viewModel有一个listview的样式:ItemContainerStyle="{DynamicResource ListViewItemContainerStyle}"。
上下文菜单将有2个选项,根据每个视图模型中的一些约束来启用或禁用。是否启用将由命令的可执行性来决定。
我没有问题,如果我把它放在每个视图内的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}"/>