2012-02-29 5 views
8

클래스에 2 개의 속성 (WPF 컨트롤) : HorizontalOffsetVerticalOffset (모두 공개 Double ')이 있습니다. 이러한 속성이 변경 될 때마다 메서드를 호출하고 싶습니다. 어떻게해야합니까? 나는 한 가지 방법을 안다. 그러나 나는 올바른 방법이 아니라고 확신한다. (속성을 모니터링하기 위해 매우 짧은 눈금 간격의 DispatcherTimer 사용). 더 문맥속성 변경 모니터링

편집 :

이 속성은 telerik의 scheduleview 제어에 속한다. 나는 하나의 방법을 알고

+1

를 사용하여 이벤트를? http://msdn.microsoft.com/en-us/library/awbftdfh.aspx –

+0

기존 이벤트를 구독하는 방법을 알고 있지만 구독 준비가 된 자체 이벤트를 만드는 데 경험이 없습니다. 이것이 제가 여기서 성취하고자하는 것에 대해 가장 효율적이라고 말하는 방식입니까? –

+2

글쎄, 이것들은 당신이 소유하지 않은 타입의 두 가지 속성입니다; Telerik이 어떤 메커니즘을 가지고 있는지 확인해야합니다. Telerik은 이러한 속성을 모니터링하기 위해 컨트롤을 공개했습니다. 그것이 WPF라면, 나는 그것이'INotifyPropertyChanged'라고 생각했을 것이다. 이 경우 자신의 이벤트 소스를 공개하고 있지 않다면, 해당 컨트롤에 이미 존재하기를 바랍니다. –

답변

17

활용 컨트롤의 INotifyPropertyChanged 인터페이스 구현.

컨트롤이 myScheduleView 호출하는 경우 :

//subscribe to the event (usually added via the designer, in fairness) 
myScheduleView.PropertyChanged += new PropertyChangedEventHandler(
    myScheduleView_PropertyChanged); 

private void myScheduleView_PropertyChanged(Object sender, 
    PropertyChangedEventArgs e) 
{ 
    if(e.PropertyName == "HorizontalOffset" || 
    e.PropertyName == "VerticalOffset") 
    { 
    //TODO: something 
    } 
} 
+0

완벽한, 그냥 친구가 된 후 - 감사합니다. –

5

...

DispatcherTimer이 와우 : INotifyPropertyChange 인터페이스를 피하기는 당신의 친구입니다. 샘플은 the msdn을 참조하십시오.

기본적으로 등록 정보의 Setter에서 이벤트 (일반적으로 onPropertyChanged라고 함)를 발생시키고 구독자가 처리합니다.

msdn에서 예시적인 구현 간다 :

// This is a simple customer class that 
// implements the IPropertyChange interface. 
public class DemoCustomer : INotifyPropertyChanged 
{ 
    public event PropertyChangedEventHandler PropertyChanged;  
    private void NotifyPropertyChanged(String info) 
    { 
     if (PropertyChanged != null) 
      PropertyChanged(this, new PropertyChangedEventArgs(info));    
    } 

    public string CustomerName 
    { 
     //getter 
     set 
     { 
      if (value != this.customerNameValue) 
      { 
       this.customerNameValue = value; 
       NotifyPropertyChanged("CustomerName"); 
      } 
     } 
    } 
} 
+0

Zortkun에게 감사드립니다. OP 편집 (편집 할 수없는 클래스/컨트롤입니다) - 제 답변이 여전히 적용됩니까? 이제 INotifyPropertyChange를 살펴 보겠습니다. –

+1

Telerik에 익숙하지 않습니다. Daniel.하지만 의견에서 나는 당신이 이벤트가 어떻게 만들어 질 수 있는지에 대한 질문을 보았습니다. @ 안드라스 졸탄은 당신의 대답을 가지고있는 것 같습니다. :) –

+0

Zortkun 다시 감사합니다 –

관련 문제