0

当内部 DependencyProperties 发生变化时,有没有办法通知 DependencyObject 的绑定?

例如,我有这个类:

public class BackgroundDef : DependencyObject
    {
        public static readonly DependencyProperty Color1Property =
            DependencyProperty.Register("Color1", typeof(Color),
                typeof(BackgroundDef), new UIPropertyMetadata(Colors.White));

        public static readonly DependencyProperty UseBothColorsProperty =
            DependencyProperty.Register("UseBothColors", typeof(bool),
                typeof(BackgroundDef), new UIPropertyMetadata(false));

        public static readonly DependencyProperty Color2Property =
            DependencyProperty.Register("Color2", typeof(Color),
                typeof(BackgroundDef), new UIPropertyMetadata(Colors.White));

        public Color Color1
        {
            set { SetValue(Color1Property, value); }
            get { return (Color)GetValue(Color1Property); }
        }

        public bool UseBothColors
        {
            set { SetValue(UseBothColorsProperty, value); }
            get { return (bool)GetValue(UseBothColorsProperty); }
        }

        public Color Color2
        {
            set { SetValue(Color2Property, value); }
            get { return (Color)GetValue(Color2Property); }
        }
    }

为此,我有 3 个单独的双向绑定,用于设置 Color1、Color2 和 UseBothColors 的值。但我也有一个 BackgroundDef 实例的绑定,它应该创建一个 Brush 并绘制一个按钮的背景(单一颜色或两种渐变颜色)。我的问题是 DependencyProperties 的双向绑定更新了属性,但是没有调用类实例的绑定,因为显然整个对象没有改变。知道如何在 DependencyProperties 更改时调用 DependencyObject 的绑定吗?

4

1 回答 1

1

你可以:

使用多重绑定并绑定到所有三个值,而不是绑定到类。然后每当其中一个值更改时,绑定将重新评估。(这是我会使用的技术)

或者:

如果您的类BackgroundDef是另一个类的属性,则只要BackgroundDef' 的任何属性发生更改,您都可以在该类上引发 NotifyPropertyChanged 事件。当然,这意味着在BackgroundDef其父类上拥有一个属性,并在孩子发生变化时通知父母。

于 2010-04-09T05:30:52.107 回答