2014-10-11 151 views
1

我有一個DataGrid其單元格背景顏色必須是2種。設置datagrid單元格背景顏色wpf

  1. 灰色,如果單元格沒有值
  2. 白(默認值),如果電池有任何價值

我寫了下面的代碼來實現這一功能,但它不能正常工作。

<UserControl.Resources> 
    <Style x:Key="DataGridCellStyle" TargetType="{x:Type DataGridCell}"> 
     <Style.Triggers> 
      <Trigger Property="HasContent" Value="False"> 
       <Setter Property="Background" Value="Gray"/> 
      </Trigger> 
     </Style.Triggers> 
    </Style> 
</UserControl.Resources> 

<DataGrid CellStyle="{StaticResource DataGridCellStyle}"> 

任何人都可以請解釋爲什麼嗎?

+0

是否設置爲背景的本地價值'White'? – 2014-10-11 05:43:56

+0

不需要...默認僅爲白色。編輯評論! – SohamC 2014-10-11 05:46:55

回答

4

發生這種情況的原因是,ContentDataGridCellTextBlock(或者在單元格編輯時爲TextBox)。因此,即使空單元格包含空的TextBlockTextBox),即HasContent屬性也不會變爲false

這應該工作,如果你不使用自定義模板與你的細胞:

<Style x:Key="DataGridCellStyle" TargetType="{x:Type DataGridCell}"> 
    <Style.Triggers> 
     <DataTrigger Binding="{Binding Path=Content.Text, RelativeSource={RelativeSource Self}}" Value="" > 
      <Setter Property="Background" Value="Gray"/> 
     </DataTrigger> 
    </Style.Triggers> 
</Style> 
+0

那麼如何實現提到的功能呢? – SohamC 2014-10-11 06:57:50

+0

@ user1603970我相信'DataTrigger' +'IValueConverter'可以做到這一點,但不是肯定的。我正在努力工作。 – 2014-10-11 07:01:35

+0

@ user1603970解決。 'IValueConverter'不需要。 – 2014-10-11 07:34:36

相關問題