13

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

より多くの文脈のために編集:

これらのプロパティは、telerikスケジュールビューコントロールに属しています。

4

2 に答える 2

25

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
  }
}
于 2012-02-29T15:48:54.917 に答える
6

私は1つの方法を知っています...DispatcherTimer

うわーそれを避けてください:)INotifyPropertyChangeインターフェースはあなたの友達です。サンプルについては、msdnを参照してください。

基本的に、プロパティのイベント(通常はと呼ばれるonPropertyChanged)を発生させSetter、サブスクライバーがそれを処理します。

外出先からの実装例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");
            }
        }
    }
}
于 2012-02-29T15:33:53.757 に答える