2012-02-29 26 views
8

Bir sınıfa 2 özellik (WPF denetimi) var: HorizontalOffset ve VerticalOffset (her ikisi de genel Double 's). Bu özellikler değiştiğinde bir yöntem aramak istiyorum. Bunu nasıl yapabilirim? Tek bir yol biliyorum - ama eminim ki bu doğru yolu değil (özelliği izlemek için çok kısa tıklama aralıklarının bir DispatcherTimer kullanarak). DAHA BAĞLAMINDA İÇİNÖzellikte bir değişikliği izleyin

DÜZENLEME:

Bu özellikler bir telerik scheduleview kontrolüne aittir. Bir yol biliyor

+1

Kullanım olayları? http://msdn.microsoft.com/en-us/library/awbftdfh.aspx –

+0

Mevcut etkinliklere nasıl abone olacağımı biliyorum - ancak abonelik için hazır olan kendi etkinlikleri oluşturma konusunda hiçbir deneyimim yok - bu mümkün mü? Bu, benim elde etmek istediğim şey için en verimli olduğunu söylediğin gibi mi? –

+2

Eh, bunlar sahip olmadığınız bir tür üzerinde iki özelliktir; Eğer varsa, Telerik bu özellikleri kontrol etmek için hangi mekanizmayı etkilediğini görmelisiniz. WPF olduğu için, 'INotifyPropertyChanged' olduğunu düşünürdüm. Bu durumda kendi olay kaynağınızı açığa çıkarmıyorsunuz, bu kontrolün –

cevap

17

Kaldıraç kontrolünün INotifyPropertyChanged arayüzü uygulanması.

kontrol myScheduleView çağrılırsa:

//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

Mükemmel, tam da eşimden sonra - teşekkürler. –

5

...

DispatcherTimer Vay :) INotifyPropertyChange arayüzünü önlemek arkadaşın. Örnekler için bkz. the msdn.

Temel olarak, bir özelliğin (genellikle onPropertyChanged olarak adlandırılır) özelliklerinin Setter numarasına ateş etmesini ve abonelerin bunu işlemesini sağla.

msdn bir örnek uygulama gider:

// 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

Teşekkürler Zortkun, lütfen OP'deki düzenlemeye bakın (düzenleyemediğim bir sınıf/kontrol) - cevabınız hala geçerli mi? Şimdi INotifyPropertyChange içine bakacağım. –

+1

Ben Telerik şeyler, Daniel aşina değilim.Ama Olaylar nasıl oluşturulabilir sordu gördüm yorumlarda, bunun için bir düzenleme yayınlanmıştır. @Andras Zoltan cevabınızı tho gibi görünüyor. :) –

+0

Tekrar teşekkürler Zortkun –

İlgili konular