如何控制整个DataGridCell背景而不仅仅是文本部分?
问题描述:
我试图控制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对象来填充表格)。
答
在款式为你的TextBlock,设置的HorizontalAlignment伸展,并设置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>
OK,从你的回答,现在我明白为什么它没有工作。我仍然必须添加' '来压制边框,并且它完美地工作,谢谢! –
RedGlyph
2010-04-30 18:28:51
很高兴能帮到你! – Scott 2010-04-30 18:48:37