Это можно сделать в чистом виде XAML, все, что вам нужно сделать, это связать ваше visibility
контекстного меню со свойством bool, содержащим ваше условие следующим образом -
<YourControl>
<YourControl.Resources>
<BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter"/>
</YourControl.Resources>
<YourControl.ContextMenu>
<ContextMenu Visibility="{Binding IsEnable,
Converter={StaticResource BooleanToVisibilityConverter}}">
<MenuItem Header="MenuItem1"/>
<MenuItem Header="MenuItem2"/>
<MenuItem Header="MenuItem3"/>
</ContextMenu>
</YourControl.ContextMenu>
</YourControl>
Здесь IsEnable
- это простое свойство CLR, в его геттере вы можете иметь логику для вашего условия, в зависимости от которой вам нужно переключить видимость вашего контекстного меню ..