Вы можете установить ContextMenu
в ItemContainerStyle
, чтобы сделать его зависимым от ряда, в котором вы можете использовать DataTriggers
.
Редактировать: структура должна принимать следующую форму, если вы решите поменять весь ContextMenu на условие:
<Style TargetType="{x:Type ListViewItem}">
<Style.Resources>
<ContextMenu x:Key="DefaultMenu">
<!-- Rest of menu here -->
</ContextMenu>
<ContextMenu x:Key="NonDefaultMenu">
<!-- Rest of menu here -->
</ContextMenu>
</Style.Resources>
<Style.Triggers>
<DataTrigger Binding="{Binding SomeProperty}" Value="SomeValue">
<Setter Property="ContextMenu" Value="{StaticResource NonDefaultMenu}"/>
</DataTrigger>
</Style.Triggers>
<Setter Property="ContextMenu" Value="{StaticResource DefaultMenu}"/>
</Style>
Как правило, вы также можете определить ContextMenu на месте, но если вы добавите обработчики событий, это приведет к ошибке, синтаксис будет:
<Setter Property="ContextMenu">
<Setter.Value>
<ContextMenu>
<!-- Rest of menu here -->
</ContextMenu>
</Setter.Value>
</Setter>