【发布时间】:2019-05-08 10:06:17
【问题描述】:
我想根据 ist 值更改 wpf 数据网格中单元格的背景。我的数据网格如下:
<DataGrid x:Name="dataGridView_Comparison" ItemsSource="{Binding}" HorizontalAlignment="Stretch" AlternatingRowBackground="LightBlue" AlternationCount="2" Height="537" Margin="15,48,5,0" VerticalAlignment="Top" Width="1016" Background="#FF2C2727" Grid.ColumnSpan="2" Style="{DynamicResource DGHeaderStyle}" selectionUnit="FullRow">
我在 c# 中动态创建这个数据网格,因为列的数量总是根据输入而变化。代码部分是:
DataTable table = new DataTable();
table.Columns.Add("Column1", typeof(string));
foreach (string num in numbersList)
{
table.Columns.Add(num, typeof(string)); //Adding each numbers as a column in the table
}
foreach (string tc in uniqueCases)
{
DataRow newRow = table.NewRow();
newRow["Column1"] = tc+"_Case"; //Adding the case name of the row
foreach (string num in numbersList)
{
//For each number column add value corresponding to the condition..
newRow[num] = "0"; //Default value as 0
if (list_beforeThreshold.ContainsKey(num + tc) == true)
{
newRow[num] = "1";
}
if (list_afterThreshold.ContainsKey(num + tc) == true)
{
newRow[num] = "2";
}
table.Rows.Add(newRow);
}
dataGridView_Comparison.DataContext = table.DefaultView; //添加到wpf中的datagrid
我是 c# 和 wpf 的新手。有人可以指导我如何根据它们的值(0,1,2)为单元格赋予不同的颜色。 PS:我现在正在尝试数据触发器。但没有取得任何进展。
编辑 1:列数和列名不能在 xaml 中硬编码,因为它们是在 c# 中动态填充的。
提前致谢
【问题讨论】:
-
请参阅stackoverflow.com/q/5549617/1136211 和其他类似问题。
-
@Clemens 我已经尝试了大多数这些解决方案。他们没有解决我的问题,因为我的数据网格列不是静态的。由于我是 wpf 的新手,我不确定我是否遵循为我的数据网格构建数据表的正确方法