从Shape派生的类中的绑定Fill属性

时间:2011-09-20 14:42:38

标签: wpf binding shape

我很难在从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吗?

1 个答案:

答案 0 :(得分:2)

我回答自己,因为我找到了答案:

事实上,在应用程序的另一段代码中,我做了类似的事情:

MyDerivedShape.Fill = Brushed.Red

这会产生巨大的后果,因为它会破坏我实施的Binding!

它与“依赖属性值优先级”相关联,这是我根本不了解的主题。

因此,如果将ViewModel属性绑定到依赖项属性,则不应再直接设置Dependency属性。如果你这样做,你的绑定就会丢失!