2010-04-30 84 views
3

我試圖控制DataGrid單元格背景的有條件的列值。不幸的是我得到這樣的:如何控制整個DataGridCell背景而不僅僅是文本部分?

alt text http://img11.imageshack.us/img11/5997/clipboard01da.png

這是不是很美觀,我想有整個小區以不同的顏色,不僅文本後面的部分。下面是部分代碼:

<DataGridTextColumn 
    Binding="{Binding Path=PrivateMemorySize, StringFormat='#,##0'}" 
    Header="Memory Size" > 
    <DataGridTextColumn.ElementStyle> 
     <Style TargetType="{x:Type TextBlock}"> 
      <Setter Property="HorizontalAlignment" Value="Right" /> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding Path=PrivateMemorySize, 
          Converter={StaticResource isLarge}, 
          ConverterParameter=20000000}" Value="true"> 
        <Setter Property="Background" Value="Yellow" /> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </DataGridTextColumn.ElementStyle> 
</DataGridTextColumn> 

isLarge剛剛返回true當單元格的值大於參數更高的轉換器)

如果我定義爲DataGridCell目標風格,結果是相同。

有什麼想法可能是錯的?我沒有使用任何花哨的東西,只是默認的DataGrid(在這個例子中鏈接到CLR對象來填充表格)。

回答

2

在款式爲你的TextBlock,設置的Horizo​​ntalAlignment伸展,並設置TextAignment到右:

<Style TargetType="{x:Type TextBlock}"> 
     <Setter Property="HorizontalAlignment" Value="Stretch" /> 
     <Setter Property="TextAlignment" Value="Right" /> 
     <Style.Triggers> 
      <DataTrigger Binding="{Binding Path=PrivateMemorySize, 
         Converter={StaticResource isLarge}, 
         ConverterParameter=20000000}" Value="true"> 
       <Setter Property="Background" Value="Yellow" /> 
      </DataTrigger> 
     </Style.Triggers> 
    </Style> 
+0

OK,從你的回答,現在我明白爲什麼它沒有工作。我仍然必須添加''來壓制邊框,並且它完美地工作,謝謝! – RedGlyph 2010-04-30 18:28:51

+0

很高興能幫到你! – Scott 2010-04-30 18:48:37

相關問題