我很难在从Shape派生的classe中绑定 FillProperty 。
public static readonly DependencyProperty NumberNodeProperty = DependencyProperty.Register("Number", typeof(int), typeof(MyDerivedShape), new FrameworkPropertyMetadata(0, FrameworkPropertyMetadataOptions.AffectsMeasure | FrameworkPropertyMetadataOptions.AffectsParentMeasure));
public MyDerivedShape( DerivedViewModel viewmModel):Shape
{
DataContext = viewmModel;
Binding FillColorBinding = new Binding("FillColor");
SetBinding(FillProperty, FillColorBinding);
Binding numberBinding = new Binding("Number");
SetBinding(NumberNodeProperty, numberBinding);
}
“FillColor”属性在基础Viewmodel中声明,DerivedViewModel从该基本Viewmodel继承。
“Number”属性在DerivedViewModel中声明
FillProperty是Shape基类中的默认依赖项属性。
NumberNodeProperty是在MyDerivedShape
中声明的依赖项属性所以,当我在DerivedViewModel中更改“Number”时,更改将传播到Shape(Shape绘制一个数字)
但是当我在DerivedViewModel中更改FillColor时,不会传播更改,并且不会更改颜色。我使用FillColor是SolidColorBrush类型。
似乎绑定不起作用......对于“FillProperty”依赖属性,“Inherits”属性设置为false吗?
答案 0 :(得分:2)
我回答自己,因为我找到了答案:
事实上,在应用程序的另一段代码中,我做了类似的事情:
MyDerivedShape.Fill = Brushed.Red
这会产生巨大的后果,因为它会破坏我实施的Binding!
它与“依赖属性值优先级”相关联,这是我根本不了解的主题。
因此,如果将ViewModel属性绑定到依赖项属性,则不应再直接设置Dependency属性。如果你这样做,你的绑定就会丢失!