以编程方式将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;
尝试在Trigger之外为样式添加setter,它将初始化Background的值。
style.Setters.Add(new Setter(BackgroundProperty, Brushes.White));