我在DataGrid中有一个值网格。在每个单元格中,我有4个值中的一个,我希望每个值都有一个关联的颜色。
在过去,我所有的数据触发器都是这样的格式;
<DataTrigger Binding="{Binding Status}" Value="R">
<Setter Property="xcdg:DataRow.Background" Value="Pink" />
</DataTrigger>但是我需要一些格式的东西;
<DataTrigger Binding="{Binding *}" Value="R">
<Setter Property="xcdg:DataRow.Background" Value="Pink" />
</DataTrigger>这样任何单元格的值都会被检查。我不能使用显式绑定的原因是列数和它们的名称是动态的,我使用扩展CustomTypeDescriptor来公开列和行以进入网格。
提前感谢!
发布于 2010-11-11 00:06:17
<DataTrigger Binding="{Binding Path=Content, RelativeSource={x:Static RelativeSource.Self}}" Value="Failure">
<Setter Property="xcdg:DataRow.Background" Value="Red" />
</DataTrigger>我需要使用一个相对的资源。
更进一步,我最终使用的是;
<xcdg:DataGridControl.Resources>
<c:ColorConverter x:Key="colorConverter" />
<Style TargetType="{x:Type xcdg:DataCell}">
<Style.Triggers>
<DataTrigger Binding="{Binding Path=IsSelected, RelativeSource={RelativeSource AncestorType={x:Type xcdg:DataRow}}}" Value="False">
<Setter Property="xcdg:DataCell.Background" Value="{Binding RelativeSource={x:Static RelativeSource.Self}, Converter={StaticResource colorConverter}}" />
</DataTrigger>
<DataTrigger Binding="{Binding Path=IsDirty, RelativeSource={RelativeSource AncestorType={x:Type xcdg:DataRow}}}" Value="True">
<Setter Property="xcdg:DataCell.Background" Value="{Binding RelativeSource={x:Static RelativeSource.Self}, Converter={StaticResource colorConverter}}" />
</DataTrigger>
</Style.Triggers>
</Style>
</xcdg:DataGridControl.Resources>我的颜色转换器看起来有点像这样;
[ValueConversion(typeof(DataCell), typeof(Brush))]
public class ColorConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
var cell = (DataCell)value;
var content = (string)cell.Content;
if (content == null || cell.ParentRow.IsSelected)
{
return DependencyProperty.UnsetValue;
}
if (content == "Unknown")
{
return new SolidColorBrush(Colors.LightYellow);
}
...
return DependencyProperty.UnsetValue;
}
public object ConvertBack(object value, Type targetType,
object parameter, CultureInfo culture)
{
return null;
}
}我现在唯一的问题是,当我滚动我的背景颜色时,当DataRows被重用时,我的背景颜色不会更新。
当DataRow被重用时,我也找不到可以挂接的事件...
发布于 2010-11-10 20:30:10
是否可以在绑定中使用ValueConverter?这样你就可以在转换器中检查它应该返回的值。
https://stackoverflow.com/questions/4142750
复制相似问题