2010-07-28 1 views
1

사용자 지정 클래스 인 컨트롤에 대한 종속성 속성이 있습니다.wpf 이벤트를 변경하기 전의 종속성 속성?

값이 변경되기 전에 발생하는 이벤트가 있습니까?

속성이 이미 변경된 후에 OnPropertyChanged가 발생하는 것을 알고 있습니다.

컨트롤의 상태를 유지하기 위해 변경 작업을 취소 할 수 있도록하기 전에 이벤트가 필요합니다.

종속성 속성을 다시 이전 값으로 설정할 수 없으므로 컨트롤에서 상태가 손실됩니다.

감사합니다.

답변

5

.NET 3.5에서 도입되었다. 다음 예에서

만 0보다 큰 값을 승인 값 :

public int Test { 
    get { return (int)GetValue(TestProperty); } 
    set { SetValue(TestProperty, value); } 
} 


public static readonly DependencyProperty TestProperty = 
    DependencyProperty.Register("Test", typeof(int), typeof(YourClass), 
    new UIPropertyMetadata(0), delegate(object v) { 
     return ((int)v) > 0; // Here you can check the value set to the dp 
    }); 
1

데이터 개체가 INotifyPropertyChanging을 구현하는 경우 속성 값이 변경되기 전에 발생하는 PropertyChanging 이벤트를 처리 할 수 ​​있습니다.

INotifyPropertyChanging 당신은 당신이 원하지로하는 경우, 그것을 입력 값을 확인하고 거부 할 ValidateValueCallback을 사용할 수 있습니다, 그 당신의 DependencyProperty하면

+0

답장을 보내 주셔서 감사합니다. – guest

-1

넌 속성 선언 집합 부에서의 속성 값을 확인할 수있다.

public Color CustomColor 
{ 
    get { return GetValue(CustomColorProperty) as Color;} 

    set 
    { 
     //check value before setting 
     SetValue(CustomColorProperty, value); 
    } 
} 

는 또한 PropertyChangedCallback, ValidateValueCallback, CoerceValueCallback 명 규모의 helpfull가있을 것입니다 : 우리가 CustomColor 출발 속성이 있다고 가정하자.

+6

바인딩 엔진이 실제로이를 사용하지 않기 때문에 종속성 속성에 대해 getter/setter 내부에 어떠한 논리도 갖지 않는 것이 좋습니다. – HaxElit