それは多くの方法で行うことができます。1つの方法は、DataGridの列ヘッダーのスタイルを編集することです。列ヘッダーのスタイルの例は、次の場所にあります。
WPF DataGrid列ヘッダースタイル、コードビハインドのメニュー表示を変更しますか?
上記の記事のようにControlTemplateにメニューを表示する代わりに、列ヘッダー用に次のようなボタンを使用できます。
<Button Grid.Column="2" Name="MultiButton" MouseRightButtonDown="MultiButton_MouseRightButtonDown" Click="MultiButton_Click" Visibility="Hidden">X</Button>
ボタンは2番目のマウスボタンでポップアップメニューを開き、クリックすると列が削除されます。ボタンはデフォルトで非表示になっているため、マウスが列ヘッダーに移動したときにボタンを表示するには、トリガーが必要です。
<Trigger Property="IsMouseOver" Value="True" >
<Setter Property="Visibility" TargetName="DeleteColumn" Value="Visible" />
</Trigger>
すべての列にボタンがあるため、クリックイベントは非表示にする列を分類する必要があります。
private void MultiButton_Click(object sender, RoutedEventArgs e)
{
object dataContext = ((FrameworkElement)sender).DataContext;
foreach (DataGridColumn col in dataGrid1.Columns)
{
if (col.Header.ToString() == dataContext.ToString())
{
col.Visibility = Visibility.Hidden;
}
}
}
これは最善の方法ではないかもしれませんが、機能します。