我在SO上查找,但没有找到我想要的确切答案。 我有一个绑定到数据源的DataGrid视图。 我想在datagrid窗口可见后通过编程方式设置列样式。 我还想根据某些行为不时更改它。
我尝试使用DataGridTemplateColumn,但每次运行时都会删除这些列的数据。 此外,当我尝试从资源中获取单元格样式时(即始终为空)。
private void StyleColumns()
{
// Replace the DueDate column with a custom template column.
for (int i = 0; i < 7; i += 2)
{
// Create a new template column.
DataGridTemplateColumn templateColumn = new DataGridTemplateColumn();
templateColumn.Header = m_DataGrid.Columns[i].Header;
Style style = new Style();
templateColumn.CellStyle = (Style)Resources["ColumnGone"];
// ...
// Replace the auto-generated column with the templateColumn.
m_DataGrid.Columns[i] = templateColumn;
}
}
XAML 就像这样。
<DataGrid AutoGenerateColumns="True" x:Name="m_grfFileDataGrid" ItemsSource="{Binding cb.GRF}"
RowHeight="20" ColumnWidth="*"
AlternatingRowBackground="Beige"
SelectionUnit="CellOrRowHeader"
FontFamily="Consolas"
FontSize="12"
CanUserReorderColumns="False"
CanUserSortColumns="False"
CanUserAddRows="False"
CanUserDeleteRows="False">
<DataGrid.Resources>
<Style TargetType="DataGridCell" x:Key="ColumnGone">
<Setter Property="Background" Value="SeaGreen"/>
</Style>
<Style x:Key="DisabledColumn">
<Setter Property="DataGridColumn.CanUserResize"
Value="False" />
<Setter Property="DataGridColumn.CanUserSort"
Value="False" />
<Setter Property="DataGridColumn.CanUserReorder"
Value="False" />
<Setter Property="DataGridColumn.CellStyle"
Value="{StaticResource ColumnGone}" />
</Style>
</DataGrid.Resources>
</DataGrid>
任何关于此事的帮助都将不胜感激。谢谢。
Style style = (Style)m_DataGrid.Resources["ColumnGone"]; templateColumn.CellStyle = style;
。请告诉我是否有帮助。 - Anatoliy Nikolaev