WPF数据网格行颜色变化基于变量
本文关键字:于变量 变量 变化 数据网 数据 网格 颜色 WPF | 更新日期: 2023-09-27 18:05:15
我正在使用数据触发器来更改DataGrid视图组件中行的颜色。代码是:
class QuantityToColorConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return (int)value <= 444 ?
new SolidColorBrush(Colors.Red)
: new SolidColorBrush(Colors.White);
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new Exception("The method or operation is not implemented.");
}
}
我如何用一个变量替换'444'值,该变量具有button_click函数中网格单元值的一些计算结果?
编辑:使它更清楚我需要:我想改变的行,其中一列的值大于平均值的颜色。由于平均值是基于DataGrid数据计算的,因此我需要将其作为变量而不是444常量发送。
edit:按钮代码:
private void Button_Click_1(object sender, RoutedEventArgs e)
{
var engine = new FileHelperEngine<ActionLog>();
var result = engine.ReadFile("browse.csv");
// result is now an array of ActionLog
var actionsCnt = new int[22];
int curAccessId = result[1].AccessId;
int AccessCount = 0;
foreach (var record in result)
{
actionsCnt[record.ActionType]++;
if (record.AccessId != curAccessId) { curAccessId = record.AccessId; AccessCount++; }
}
quantityThreshold = AccessCount;
List<act> myList = new List<act>();
for (int i = 0; i < 22; i++)
myList.Add(new act() { actionID = i, quantity = actionsCnt[i] });
grid1.ItemsSource = myList;
engine.WriteFile("FileOut.csv", result);
}
quantityThreshold是我想使用的变量,而不是'444'
将计算变量绑定到转换器的ConverterParameter
。参见此线程绑定到转换器参数
return (int)value <= (int)parameter?
new SolidColorBrush(Colors.Red)
: new SolidColorBrush(Colors.White);
try this
<DataGrid>
<DataGrid.CellStyle>
<Style TargetType="{x:Type DataGridCell}">
<Style.Triggers>
<DataTrigger Binding="{Binding SomeProperty}" Value="SomeValue" >
<Setter Property="Foreground" Value="Blue" />
</DataTrigger>
</Style.Triggers>
</Style>
</DataGrid.CellStyle>
</DataGrid>
请参考此链接
您可以将参数传递给转换器,像这样
...
Binding="{Binding ValueToBind, Converter={SomeConverter},ConverterParameter=YourParameteres}"
...
然后在转换器中使用它作为对象参数