如何将单元格样式应用于 DataGrid 单元格
本文关键字:单元格 应用于 DataGrid 样式 | 更新日期: 2023-09-27 18:30:23
我有以下DataGrid
<DataGrid x:Name="cultureDataGrid"
Grid.Row="1"
CellStyle="{StaticResource DataGridCell}"
ItemsSource="{Binding Cultures,
NotifyOnSourceUpdated=True,
UpdateSourceTrigger=PropertyChanged,
Mode=TwoWay,
IsAsync=True}"
Style="{x:Null}" >
<DataGrid.Columns>
<DataGridTextColumn Header="Code" Binding="{Binding Code}" IsReadOnly="True"/>
<DataGridTextColumn Header="Language" Binding="{Binding Language}" IsReadOnly="True"/>
<DataGridTextColumn Header="LocalName" Binding="{Binding LocalName}" IsReadOnly="True"/>
</DataGrid.Columns>
</DataGrid>
我有以下单元格样式来更改所选Backcolor
<Style TargetType="DataGridCell" BasedOn="{StaticResource {x:Type DataGridCell}}">
<Setter Property="Background" Value="White"/>
<Setter Property="VerticalContentAlignment" Value="Center"/>
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Background" Value="Red"/>
<Setter Property="Foreground" Value="White"/>
</Trigger>
</Style.Triggers>
</Style>
我尝试应用如上所示的CellStyle="{StaticResource DataGridCell}"
,并使用DynamicResource
但资源无法解析。我已经导入了正确的资源字典,因为其他样式正在工作 我在这里做错了什么?
谢谢你的时间。
由于您的Style
没有Key
因此您不必在DataGrid
上设置CellStyle
,默认情况下它将应用于所有DataGridCell
。
如果您不希望默认情况下将其应用于所有DataGridCell
请x:Key
样式,并在DataGrid
上设置CellStyle
例:
<Style x:Key="MyDataGridCell" TargetType="DataGridCell" BasedOn="{StaticResource {x:Type DataGridCell}}">
<Setter Property="Background" Value="White"/>
<Setter Property="VerticalContentAlignment" Value="Center"/>
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Background" Value="Red"/>
<Setter Property="Foreground" Value="White"/>
</Trigger>
</Style.Triggers>
</Style>
<DataGrid CellStyle="{StaticResource MyDataGridCell}" />
要仅将样式应用于某些 DataGridRow:
创建您的 DataGridCell 样式:
< !-- DataGridCell Style-->
< Style x:Key="MyDataGridCellStyle" TargetType="{x:Type DataGridCell}">
<Setter Property="Background" Value="White"/>
<Setter Property="VerticalContentAlignment" Value="Center"/>
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Background" Value="Red"/>
<Setter Property="Foreground" Value="White"/>
</Trigger>
</Style.Triggers>
</Style>
在所需的列中使用它
< !-- DataGrid -->
<DataGrid >
<DataGrid.Columns>
<DataGridComboBoxColumn CellStyle="{StaticResource MyDataGridCellStyle}" />
<DataGridTextColumn CellStyle="{StaticResource MyDataGridCellStyle}" />
</DataGrid.Columns>
</DataGrid>