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
C# WPF Datagrid基于另一个单元格的内容格式化一个单元格_C#_Wpf_Datagrid_Wpfdatagrid - Fatal编程技术网

C# WPF Datagrid基于另一个单元格的内容格式化一个单元格

C# WPF Datagrid基于另一个单元格的内容格式化一个单元格,c#,wpf,datagrid,wpfdatagrid,C#,Wpf,Datagrid,Wpfdatagrid,我对WPF Datagrid有一个小问题。我的数据网格项源于一个名为Case的SQL表,但是在代码中有几个属性添加到Case中。其中一个是ColorForTAT,它包含着色案例的逻辑,但是用户不应看到此属性 直到现在,我才设法为整行设置背景色,但要求我只为一列着色(Name=“timetillatexternal)。我尝试在谷歌上搜索,但找不到任何有用的东西 <DataGrid Name="DataGridCase" AutoGenerateColumns="False"

我对WPF Datagrid有一个小问题。我的数据网格项源于一个名为Case的SQL表,但是在代码中有几个属性添加到Case中。其中一个是ColorForTAT,它包含着色案例的逻辑,但是用户不应看到此属性
直到现在,我才设法为整行设置背景色,但要求我只为一列着色(Name=“timetillatexternal)。我尝试在谷歌上搜索,但找不到任何有用的东西

        <DataGrid Name="DataGridCase" AutoGenerateColumns="False" IsReadOnly="True" Grid.Row="9" Grid.RowSpan="3"  Grid.ColumnSpan="10" VerticalAlignment="Top" Margin="10,0" SelectionChanged="DataGridCase_SelectionChanged">
        <DataGrid.Columns>
            <DataGridTextColumn x:Name="CaseNumber" Binding="{Binding CaseNumber }" Header="Case Number"/>
            <DataGridTextColumn x:Name="Status" Binding="{Binding FinalStatus }" Header="Tool status"/>
            <DataGridTextColumn x:Name="Title" Binding="{Binding Title }" Header="Title"/>
            <DataGridTextColumn x:Name="Country" Binding="{Binding CountryFromAssignemnt }" Header="Country"/>
            <DataGridTextColumn x:Name="CreatedDate" Binding="{Binding CreatedDate, StringFormat = 'dd/MM/yyyy HH:mm' }" Header="Created date"/>
            <DataGridTextColumn x:Name="TATExternal" Binding="{Binding TATExternal, StringFormat = 'dd/MM/yyyy HH:mm' }" Header="Due date External"/>
            <DataGridTextColumn x:Name="TATInternal" Binding="{Binding TATInternal, StringFormat = 'dd/MM/yyyy HH:mm'  }" Header="Due date Internal"/>
            <DataGridTextColumn x:Name="Assignment" Binding="{Binding Assignment }" Header="Assignment"/>
            <DataGridTextColumn x:Name="TimeTillTatExternal" Binding="{Binding TimeTillTatExternal }" Header="Days left"/>
            <DataGridTextColumn x:Name="Status3" Binding="{Binding LinkedIncident }" Header="LinkedIncident "/>
            <DataGridTextColumn x:Name="Status4" Binding="{Binding ExternalSupport}" Header="ExternalSupport"/>
            <DataGridTextColumn x:Name="Status2" Binding="{Binding SDStatus }" Header="Service Desk Status"/>
        </DataGrid.Columns>
        <DataGrid.ItemContainerStyle>
            <Style TargetType="{x:Type DataGridRow}">
                <Style.Triggers>
                    <DataTrigger Binding="{Binding ColorForTAT }" Value="black">
                        <Setter Property="Background" Value="Gray"/>
                    </DataTrigger>
                    <DataTrigger Binding="{Binding ColorForTAT }" Value="gray">
                        <Setter Property="Background" Value="LightGray"/>
                    </DataTrigger>
                    <DataTrigger Binding="{Binding ColorForTAT }" Value="red">
                        <Setter Property="Background" Value="Red"/>
                    </DataTrigger>
                    <DataTrigger Binding="{Binding ColorForTAT }" Value="yellow">
                        <Setter Property="Background" Value="Yellow"/>
                    </DataTrigger>
                    <DataTrigger Binding="{Binding ColorForTAT }" Value="green">
                        <Setter Property="Background" Value="Green"/>
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </DataGrid.ItemContainerStyle>
    </DataGrid>

您需要设置每个列的CellStyle,并将背景绑定到可以在窗口中声明的静态资源。资源:示例代码如下所示,请根据需要更改代码

<Window x:Class="WpfApplication1.MainWindow" ...>
<Window.Resources>
    <SolidColorBrush x:Key="clBr" Color="White" />
</Window.Resources>

栏目:

  <DataGridTextColumn Header="First Name" 
                                Binding="{Binding Path=FirstName}">
            <DataGridTextColumn.CellStyle>
                <Style TargetType="DataGridCell">
                    <Setter Property="Background" 
                            Value="{StaticResource clBr}" />
                </Style>
            </DataGridTextColumn.CellStyle>
        </DataGridTextColumn>

然后,您可以通过代码或xaml操作来操作静态资源