如果 DataGrid 列 Header 包含特定值,如何使它不可见

How to have DataGrid Column Header Invisible if it Contains a Certain Value

我有一个 DataGrid,如果 DataGridColumnHeader 包含特定值,我是否可以使它不可见。

这是我的尝试:

<DataGrid Grid.Row="1" Grid.Column="1" Width="400" HorizontalAlignment="Center" Margin="20" ItemsSource="{Binding RunNumbers.RunNumbers}" >
    <DataGrid.ColumnHeaderStyle>
        <Style TargetType="DataGridColumnHeader">
            <Setter Property="Visibility" Value="Visible" />
            <Style.Triggers>
                <DataTrigger Binding="{Binding Path=Content.Text, Mode=OneWay, RelativeSource={RelativeSource Self}}" Value="rows">
                    <Setter Property="Visibility" Value="Hidden"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </DataGrid.ColumnHeaderStyle>
<DataGrid />

非常感谢任何帮助,谢谢!

如果您将 AutoGenerateColumns 属性 设置为 false 并定义您想要自己明确显示的列,您可以简单地避免设置 Header [=某些列的 26=],例如:

<DataGrid Grid.Row="1" Grid.Column="1" Width="400" HorizontalAlignment="Center" Margin="20" 
          ItemsSource="{Binding RunNumbers.RunNumbers}" AutoGenerateColumns="False">
    <DataGrid.Columns>
        <!-- RunNumbers.Column1 has no header... -->
        <DataGridTextColumn Binding="{Binding Column1}" />
    </DataGrid.Columns>
</DataGrid>

或者您可以在视图中处理 AutoGeneratingColumn 事件:

private void DataGrid_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
{
    if (e.PropertyName == "rows")
        e.Column.Header = string.Empty;
}

XAML:

<DataGrid Grid.Row="1" Grid.Column="1" Width="400" HorizontalAlignment="Center" Margin="20" 
          ItemsSource="{Binding RunNumbers.RunNumbers}" AutoGeneratingColumn="DataGrid_AutoGeneratingColumn" />