2010-04-30 87 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

相关问题