Неактивное ContextMenu в WPF DataGrid
У меня есть usercontorol VariableGrid, унаследованный от datagrid
<vg:VariableGrid ItemsSource="{Binding Items, Mode=TwoWay}">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Name}" Header="Name"/>
<DataGridTextColumn Binding="{Binding Value}" Header="Value"/>
</DataGrid.Columns>
</vg:VariableGrid>
со свойствами CanUserAddRows=false, CanUserDeleteRows=false
<Style TargetType="{x:Type vg:VariableGrid}">
<Setter Property="CanUserAddRows" Value="false" />
<Setter Property="CanUserDeleteRows" Value="false" />
<Setter Property="ContextMenu" Value="{StaticResource VariableGridContextMenu}" />
</Style>
Когда пользователь щелкает правой кнопкой мыши на DataGrid, мне нужно показать контекстное меню с RoutedCommands
<ContextMenu x:Key="VariableGridContextMenu">
<MenuItem Header="Add variable" Command="{x:Static vg:VariableGrid.AddRowCommand}"/>
<MenuItem Header="Delete" Command="{x:Static ApplicationCommands.Delete}"/>
</ContextMenu>
Эти команды реализованы в моем usercontrol
public partial class VariableGrid : DataGrid, INotifyPropertyChanged
{
public static RoutedCommand AddRowCommand = new RoutedCommand();
private void InitCommands()
{
this.CommandBindings.Add(new CommandBinding(VariableGrid.AddRowCommand, AddRow));
this.CommandBindings.Add(new CommandBinding(ApplicationCommands.Delete, RemoveRow, CanRemoveRow));
}
private void AddRow(object sender, ExecutedRoutedEventArgs e)
{
…
}
private void RemoveRow(object sender, ExecutedRoutedEventArgs e)
{
…
}
private void CanRemoveRow(object sender, CanExecuteRoutedEventArgs e)
{
e.CanExecute = (SelectedItems.Count > 0);
}
}
Когда DataGrid пуст, щелчок правой кнопкой мыши показывает отключенные команды в contextMenu. Поэтому я не могу выполнить никаких действий в моем Contextmenu.
Можете ли вы помочь мне с моей проблемой?