Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在wpf中高亮显示datagrid单元格_Wpf_Xaml - Fatal编程技术网

如何在wpf中高亮显示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

我有一个datagrid,因为我必须根据特定条件突出显示特定单元格。 下面是代码片段

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;
}