如何在wpf中高亮显示datagrid单元格
我有一个datagrid,因为我必须根据特定条件突出显示特定单元格。 下面是代码片段如何在wpf中高亮显示datagrid单元格,wpf,xaml,Wpf,Xaml,我有一个datagrid,因为我必须根据特定条件突出显示特定单元格。 下面是代码片段 if (plannedOrderDetail.ORDER_TYPE == OrderType.Emergency || plannedOrderDetail.ORDER_TYPE == OrderType.Warning) { e.Record.FieldLayout.Fields[6].Settings.CellPresenterSty
if (plannedOrderDetail.ORDER_TYPE == OrderType.Emergency || plannedOrderDetail.ORDER_TYPE == OrderType.Warning)
{
e.Record.FieldLayout.Fields[6].Settings.CellPresenterStyle = ApplicationEx.GetResource<Style>("HighLightCellStyle");
}
if(plannedOrderDetail.ORDER_TYPE==OrderType.Emergency | | plannedOrderDetail.ORDER_TYPE==OrderType.Warning)
{
e、 Record.FieldLayout.Fields[6].Settings.CellPresenterStyle=ApplicationEx.GetResource(“HighLightCellStyle”);
}
此代码高亮显示第6列中的所有单元格。如何高亮显示特定单元格。如果可以通过行的数据上下文访问
订单类型
,则可以使用样式触发器,大致如下所示:
<DataGrid...>
<DataGridTextColumn x:Name="theSixthColumn" ...>
<DataGridTextColumn.CellStyle>
<Style TargetType="DataGridCell">
...
<Style.Triggers>
<DataTrigger Binding="{Binding ORDER_TYPE}"
Value="Emergency">
<Setter Property="Background" Value="Red"/>
</DataTrigger>
<DataTrigger Binding="{Binding ORDER_TYPE}"
Value="Warning">
<Setter Property="Background" Value="Red"/>
</DataTrigger>
</Style.Triggers>
</Style>
</DataGridTextColumn.CellStyle>
</DataGridTextColumn>
</DataGrid>
...
首先从DataGridRow获取特定的DataGridCell,然后应用样式
下面是从逐行索引获取DataGridCell的扩展:
public static DataGridCell GetCell(this DataGridRow row, int column)
{
if (row != null)
{
DataGridCellsPresenter presenter = GetVisualChild<DataGridCellsPresenter>(row);
// try to get the cell but it may possibly be virtualized
DataGridCell cell = (DataGridCell)presenter.ItemContainerGenerator.ContainerFromIndex(column);
return cell;
}
return null;
}
公共静态DataGridCell GetCell(此DataGridRow行,int列)
{
如果(行!=null)
{
DataGridCellsPresenter=GetVisualChild(行);
//尝试获取该单元,但它可能已虚拟化
DataGridCell=(DataGridCell)presenter.ItemContainerGenerator.ContainerFromIndex(列);
返回单元;
}
返回null;
}