2015-07-02 154 views
0

我有一個WPF Datagrid的小問題。我的數據網格項源於名爲Case的SQL表中,但是在代碼中有幾個屬性添加到Case中。其中之一是ColorForTAT,其中包含着色案例的邏輯,但是這個屬性對用戶來說應該是不可見的
直到現在我設法使它爲整行設置背景顏色,然而我被要求做的是以色只有一列(名稱=「TimeTillTatExternal)。我試圖谷歌,但找不到任何工作。WPF Datagrid基於其他單元格的一個單元格格式

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

回答

0

你需要設置每列CellStyle並綁定背景靜態資源,你可以聲明在Window.Resources:示例代碼如下所示,請根據您的要求更改代碼。

<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操作的靜態資源。

相關問題