以编程方式将setter绑定到自定义依赖项属性

本文关键字:自定义 依赖 属性 绑定 编程 方式 setter | 更新日期: 2023-09-27 18:05:21

我有自定义的DataGrid,在OnAutoGeneratingColumn中,我根据列的类型创建样式。我有第一列与DateTime,我不想改变,然后其余的,我想检测的值是否超出一些限制。现在,如果这个值超出了它的限制,我想改变背景,我也想改变背景的颜色。我创建了一个依赖属性在数据触发器中,我想把颜色绑定到那个属性上。唯一的问题是,它不起作用。什么好主意吗?

我的依赖属性

public Color BiggerThanMaxBackgroundColor
{
    get { return (Color)GetValue(BiggerThanMaxBackgroundColorProperty); }
    set { SetValue(BiggerThanMaxBackgroundColorProperty, value); }
}
public static readonly DependencyProperty BiggerThanMaxBackgroundColorProperty =
        DependencyProperty.Register("BiggerThanMaxBackgroundColor", typeof(Color), typeof(MwiTableDataGrid), new PropertyMetadata(default(Color)));

OnAutoGeneratingColumn中的样式设置

//Trigger to check if the number is higher than the top limit
DataTrigger higherTrigger = new DataTrigger();
higherTrigger.Binding = new Binding(columnHeaderName)
              {
                Converter = new MoreThanConverter(),
                ConverterParameter = SelectedDevices[this.Columns.Count - 1].maxValue
              };
higherTrigger.Value = "True";
binding = new Binding
              {
                Source = this,
                Path = new PropertyPath("BiggerThanMaxBackgroundColor")
              };
higherTrigger.Setters.Add(new Setter(BackgroundProperty, binding));
Style style = new Style(typeof(DataGridCell));
style.Triggers.Add(higherTrigger);
e.Column.CellStyle = style;

以编程方式将setter绑定到自定义依赖项属性

尝试在Trigger之外为样式添加setter,它将初始化Background的值。

style.Setters.Add(new Setter(BackgroundProperty, Brushes.White));