2011-09-20 9 views
0

Shape에서 파생 된 클래스에서 FillProperty을 바인딩하는 데 어려움이 있습니다.Shape에서 파생 된 클래스의 Binding Fill 속성

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"속성은 DerivedViewModel이 상속하는 기본 Viewmodel에 선언됩니다.

"번호"속성이 DerivedViewModel

FillProperty에 선언하는 모양 기본 클래스의 기본 종속성 속성입니다.

NumberNodeProperty이 (Shape가 숫자를 그립니다)

그럼, 어떻게하면 내가 DerivedViewModel에서 "번호"를 변경할 때, 변화가 모양에 전파된다는 점이다 MyDerivedShape에서 선언 된 종속성 속성입니다

그러나 DerivedViewModel에서 FillColor를 변경하면 변경 사항이 전달되지 않고 색상이 변경되지 않습니다. FillColor는 SolidColorBrush 유형입니다.

바인딩이 작동하지 않는 것 같습니다. "FillProperty"depedency 속성에 대해 "상속"속성이 false로 설정된 결과입니까? 내가 대답을 발견하기 때문에

답변

2

내가 나 자신에 답 : 사실

, 응용 프로그램 코드의 또 다른 조각을, 나는 같은 것을 할 :

MyDerivedShape.Fill = Brushed.Red 

이 그것으로, 엄청난 결과를 초래 제자리에 놓은 바인딩을 파괴합니다!

"Dependency Property Value Precedence"에 연결되어있어서 전혀 몰랐던 주제입니다.

따라서 ViewModel 속성을 종속성 속성에 바인딩하면 종속성 속성을 직접 설정하면 안됩니다. 그렇게하면 바인딩이 손실됩니다!

관련 문제