2012-02-29 24 views
8

मेरे पास कक्षा (WPF नियंत्रण) के लिए 2 गुण हैं: HorizontalOffset और VerticalOffset (दोनों सार्वजनिक Double)। जब भी ये गुण बदलते हैं, मैं एक विधि को कॉल करना चाहता हूं। मैं यह कैसे कर सकता हूँ? मुझे एक तरह से पता है - लेकिन मुझे पूरा यकीन है कि यह सही तरीका नहीं है (संपत्ति की निगरानी के लिए बहुत कम टिक अंतराल के DispatcherTimer का उपयोग करके)। अधिक संदर्भ के लिएसंपत्ति में बदलाव की निगरानी करें

संपादित करें:

इन गुणों एक Telerik scheduleview नियंत्रण के हैं।

+1

उपयोग घटनाओं? http://msdn.microsoft.com/en-us/library/awbftdfh.aspx –

+0

मुझे पता है कि मौजूदा घटनाओं की सदस्यता कैसे लें - लेकिन मुझे सदस्यता के लिए तैयार अपने स्वयं के कार्यक्रम बनाने के साथ कोई अनुभव नहीं है - क्या यह संभव है? क्या आप जिस तरीके से कहेंगे, वह सबसे कुशल है जो मैं यहां हासिल करना चाहता हूं? –

+2

ठीक है, यह देखते हुए कि ये दो प्रकार के गुण हैं जिनके पास आपके स्वामित्व नहीं हैं; आपको यह देखने की ज़रूरत है कि कौन सी तंत्र, यदि कोई हो, तो टेलीरिक ने उन गुणों की निगरानी के लिए नियंत्रण पर उजागर किया है। यह डब्ल्यूपीएफ को देखते हुए, मैंने सोचा होगा कि यह '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

धन्यवाद ज़ोर्टकुन, कृपया ओपी में मेरा संपादन देखें (यह एक वर्ग/नियंत्रण है जिसे मैं संपादित नहीं कर सकता) - क्या आपका उत्तर अभी भी लागू होता है? मैं अब INotifyPropertyChange में देखेंगे। –

+1

मैं टेलरिक सामान, डैनियल से परिचित नहीं हूं। लेकिन टिप्पणियों में मैंने देखा कि आपने घटनाओं के निर्माण के बारे में पूछा था, मैंने इसके लिए एक संपादन पोस्ट किया था। @ एंड्रस ज़ोलटन का आपका जवाब है। :) –

+0

धन्यवाद फिर से ज़ोरटकुन –

संबंधित मुद्दे