gpt4 book ai didi

c# - 在后面的代码中动态添加 IValueConverter

转载 作者:行者123 更新时间:2023-12-04 00:46:20 26 4
gpt4 key购买 nike

我正在使用 .NET 3.5

我有一个 DataGridTextColumn,我想在该列的值为 false 时将背景颜色变为红色。我已经在 XMAL 中看到了这一点,但无法弄清楚如何在代码隐藏中做到这一点

DataGridTextColumn column = new DataGridTextColumn() { Header = "Can Connect", Binding = new Binding("CanConnect") };
//How to add the converter here so that the background of the cell turns red when CanConnect = false?

public class IsConnectedConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
bool input = (bool)value;
switch (input)
{
case true:
return DependencyProperty.UnsetValue;
default:
return Brushes.Red;
}
}
}

最佳答案

使用 Converter property Binding 类的:

new Binding("CanConnect") {
Converter = new IsConnectedConverter()
}

在您的代码中,您将绑定(bind)分配给 DataGridTextColumnBinding 属性,但该属性仅控制单元格的内容。对于单元格的视觉外观,您需要一个样式,也可以在代码隐藏中设置:

Style st = new Style(typeof(DataGridCell));
st.Setters.Add(new Setter(Control.BackgroundProperty, binding));
column.CellStyle = st;

在该代码中,binding 将是一个带有新 Binding 对象(或上面的构造函数和初始化调用)的变量。如 docs on DataGridTextColumn.CellStyle 所述,样式的目标类型必须是DataGridCell,由于该类继承自Control,我们可以为Control的依赖属性添加setter,例如背景

恐怕我现在无法测试这段代码;我希望它能让您了解如何继续。

关于c# - 在后面的代码中动态添加 IValueConverter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12109143/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com