2013-05-17 30 views
2

我有一个网格与DataGridComboBoxColumn,我想改变单元格的前景颜色(不在编辑状态)。如何更改DataGridComboBoxColumn中单元格值的前景色?

我知道我可以使用DataGridTemplateColumn解决这个问题,但我想试试这个。

比较:

<DataGridComboBoxColumn Header="Is Active" 
    SelectedItemBinding="{Binding IsActive}" 
    EditingElementStyle="{StaticResource ComboBoxStyle}" 
    ItemsSource="{StaticResource BooleanValues}"> 
</DataGridComboBoxColumn> 

<DataGridTemplateColumn Header="IsActive"> 
    <DataGridTemplateColumn.CellTemplate> 
    <DataTemplate> 
     <TextBlock Text="{Binding IsActive}" 
     Style="{StaticResource DataGridTextBlockStyle}"/> 
    </DataTemplate> 
    </DataGridTemplateColumn.CellTemplate> 
    <DataGridTemplateColumn.CellEditingTemplate> 
    <DataTemplate> 
     <Grid FocusManager.FocusedElement="{Binding ElementName=combo}"> 
     <ComboBox Name="combo"    
      SelectedValue="{Binding IsActive}" 
      ItemsSource="{StaticResource BooleanValues}" /> 
     </Grid> 
    </DataTemplate> 
    </DataGridTemplateColumn.CellEditingTemplate> 
</DataGridTemplateColumn> 

感谢的提示!

回答

1

您可以定义DataGridComboBoxColumn CellStyle:

<DataGridComboBoxColumn Header="Is Active" 
         SelectedItemBinding="{Binding IsActive}" 
         EditingElementStyle="{StaticResource ComboBoxStyle}" 
         ItemsSource="{StaticResource BooleanValues}"> 
    <DataGridComboBoxColumn.CellStyle> 
     <Style TargetType="{x:Type DataGridCell}"> 
      <Setter Property="Foreground" Value="Red" /> 
     </Style> 
    </DataGridComboBoxColumn.CellStyle> 
</DataGridComboBoxColumn> 

enter image description here

+0

不幸的是,这并不工作,作风上DataGridCell应用,但所显示的文字是TextBlock元素的文本4级更深 - ' DataGridCell'-'Border'-'ContentPresenter'-'TextBlockComboBox'-'ContentPresenter'-'TextBlock'。 –

+0

奇怪的是,我认为它在我的情况下工作(如截图所示)。我会尽快看看。 – Sisyphe

相关问题