【发布时间】:2011-04-28 11:54:27
【问题描述】:
已更新:清理主题并总结。
嗨, 我有一个数据表填充,其中每个单元格都是这样的类
class CValue{
public object Value;
public Brush Quality;
private int m_quality;
public override String toString(){
return Value.toString();
}
}
我的数据网格绑定在数据表上,并且运行良好。 但我的目标是根据质量值切换单元格的背景颜色。
我打算使用数据模板,但根本不知道它是如何工作的......
<dg:DataGrid Name="DataGridResult" IsReadOnly="True" AutoGenerateColumns="False"
BorderThickness="1" BorderBrush="{DynamicResource clBLACK}"
CanUserReorderColumns="False"
ItemsSource="{Binding Path=Result}">
<dg:DataGrid.Resources>
<Style TargetType="{x:Type dg:DataGridCell}">
<Style.Setters>
<Setter Property="Background" Value="{Binding [1].Quality}"/>
</Style.Setters>
</Style>
</dg:DataGrid.Resources>
<dg:DataGrid.ItemTemplate>
<DataTemplate>
<dg:DataGridCell>
</dg:DataGridCell>
</DataTemplate>
</dg:DataGrid.ItemTemplate>
</dg:DataGrid>
实际上,如果背景设置器的值设置为“蓝色”,则所有单元格都是蓝色的,所以没关系,但我找不到将它绑定到我的属性的方法。 [1] 似乎返回了该行的第 1 列...
如何动态设置单元格? 因为我有动态数量的列,但是所有的 CValue 类型。
【问题讨论】:
-
您真的不想拥有画笔以提高质量,对吧?当然可以,但我想说使用转换器或 DataTrigger 进行值绑定会更整洁。
-
是的,但实际上我需要将一些值和颜色放入配置中,所以在代码中。我正在寻找最简单的方法:)
-
好的,因为在这种情况下你不需要任何转换器,只需直接绑定到质量 Background={Binding Quality}。您想要一个带有 .cs 的应用的简短示例来演示我认为您正在尝试做的事情吗?
-
是的,这真的很有帮助:)
标签: c# wpf data-binding datagrid datatemplate