Скрыть / показать столбец DataGrid, щелкнув правой кнопкой мыши заголовок в WPF Xaml
У меня есть DataGrid, и я хочу щелкнуть правой кнопкой мыши заголовки, чтобы иметь возможность скрыть или показать выбранный столбец. У меня есть мой код xaml ниже. (используя Datagrid, где я связываю видимость Заголовка) Мой код будет показывать MenuItem, даже когда я щелкаю правой кнопкой мыши по строкам. Я хочу показать элементы меню и выбрать или отменить выбор столбцов для отображения или скрытия ТОЛЬКО при нажатии правой кнопки мыши на заголовках. Я хочу сделать это в xaml и привязать его к моему коду MVVM (в C#).
(прокси указывает на класс BindingProxy, в котором я могу связать видимость каждого столбца)
<DataGrid
ItemsSource="{Binding Path=DataGridRows}"
AutoGenerateColumns="False"
AlternationCount="2">
<DataGrid.Resources>
<proxy:BindingProxy x:Key="Column1Visibility" Data="{Binding Column1Visibility"/>
<proxy:BindingProxy x:Key="Column2Visibility" Data="{Binding Column2Visibility}"/>
<proxy:BindingProxy x:Key="Column3Visibility" Data="{Binding Column3Visibility}"/>
<Style x:Key="DataGridHeaderAlignment" TargetType="DataGridColumnHeader">
<Setter Property="HorizontalAlignment" Value="Stretch"/>
<Setter Property="HorizontalContentAlignment" Value="Center"/>
</Style>
</DataGrid.Resources>
<DataGrid.ContextMenu>
<ContextMenu>
<MenuItem Header="Find" Command="{Binding ButtonClicks}" CommandParameter="find" />
<MenuItem Header="Delete" IsCheckable="True" Command="{Binding DeleteItem}" />
</ContextMenu>
</DataGrid.ContextMenu>
<DataGrid.Columns>
<DataGridTextColumn Width="98" Header ="column 1" HeaderStyle="{StaticResource DataGridHeaderAlignment}" Binding="{Binding Column1}" Visibility="{Binding .Data, Source={StaticResource Column1Visibility}}/>
<DataGridTextColumn Width="88" Header="column 2" HeaderStyle="{StaticResource DataGridHeaderAlignment}" Binding="{Binding Column2}" Visibility="{Binding .Data, Source={StaticResource Column2Visibility}}/>
<DataGridTextColumn Width="88" Header="column 3" HeaderStyle="{StaticResource DataGridHeaderAlignment}" Binding="{Binding Column3}" Visibility="{Binding .Data, Source={StaticResource Column3Visibility}} />
</DataGrid.Columns>
</DataGrid>