它可以通过多种方式完成。一种方法是编辑 DataGrid 列标题的样式。可以在以下位置找到列标题样式的示例:
更改 WPF DataGrid 列标题样式,代码隐藏中的菜单可见性?
而不是像上面文章中那样在 ControlTemplate 中有菜单,可以有一个像这里这样的按钮用于列标题:
<Button Grid.Column="2" Name="MultiButton" MouseRightButtonDown="MultiButton_MouseRightButtonDown" Click="MultiButton_Click" Visibility="Hidden">X</Button>
按钮使用第二个鼠标按钮打开弹出菜单,单击应该删除该列。该按钮默认是隐藏的,因此当鼠标移动到列标题时,必须触发才能使按钮可见:
<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;
}
}
}
这可能不是最好的方法,但它确实有效。