如果 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" />
我有一个 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" />