2012-02-29 14 views
8

クラスに2つのプロパティ(WPFコントロール):HorizontalOffsetVerticalOffset(どちらも公開Doubleのもの)があります。これらのプロパティが変わるたびにメソッドを呼びたいと思います。これどうやってするの?私は1つの方法を知っています - しかし、私はそれが正しい方法ではないことをかなり確信しています(プロパティを監視するために非常に短いティック間隔のDispatcherTimerを使用)。 MORE CONTEXT FORプロパティの変更を監視する

EDIT:

これらのプロパティは、telerikのscheduleviewコントロールに属しています。私は1つの方法を知っている

+1

使用イベント? http://msdn.microsoft.com/en-us/library/awbftdfh.aspx –

+0

私は既存のイベントを購読する方法を知っています - しかし、自分のイベントをサブスクリプションの準備ができていない - これは可能ですか?これは私がここで達成したいと思っているものに対して最も効率的だと言う方法でしょうか? –

+2

これは、所有していないタイプの2つのプロパティです。 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

おかげで再びZort​​kun –

関連する問題