Как сделать заголовок столбца DataGrid невидимым, если он содержит определенное значение - PullRequest
0 голосов
/ 28 сентября 2018

У меня есть 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 />

Любая помощьс благодарностью, спасибо!

1 Ответ

0 голосов
/ 28 сентября 2018

Если вы установите для свойства AutoGenerateColumns значение false и определите столбцы, которые хотите явно отображать самостоятельно, вы можете просто избежать установки свойства Header некоторых столбцов, например:

<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" />
...