2012-01-11 8 views
17

मैं Column वर्ग के VisiblePosition संपत्ति के लिए संपत्ति बदली हुई घटना की सदस्यता के लिए निम्नलिखित कोड है:DependencyProperty बदली हुई घटना के लिए सुनो और पुराने मूल्य प्राप्त

:

DependencyPropertyDescriptor dpd = DependencyPropertyDescriptor.FromProperty(ColumnBase.VisiblePositionProperty, typeof(Column)); 

if (dpd != null) 
{ 
    dpd.AddValueChanged(col, ColumnVisiblePositionChangedHandler); 
} 

यहाँ ColumnVisiblePositionChangedHandler विधि की परिभाषा है

static internal void ColumnVisiblePositionChangedHandler(object sender, EventArgs e) 

समस्या यह है कि मुझे संपत्ति का पुराना मूल्य प्राप्त करने की आवश्यकता है। मैं उसको कैसे करू?

धन्यवाद,

उत्तर

15

दुर्भाग्य से, आप जब इस तरह से दर्ज की संपत्ति बदली हुई ईवेंट हैंडलर वर्ष मूल्य जानकारी नहीं मिलता है।

एक कामकाज कहीं भी संपत्ति मूल्य को स्टोर करना है (यह आपका 'पुराना' मान है) और उसके बाद ईवेंट हैंडलर में वर्तमान मूल्य की तुलना करें।

एक और कामकाज अपनी निर्भरता संपत्ति (डीपी) बनाना और अपने डीपी और नियंत्रण के डीपी के बीच बाध्यकारी बनाना है। यह आपको WPF शैली में अधिसूचना बदल देगा।

यहां एक article about this है।

+0

आपका कामकाज # 2 सरल और बहुत ही सुरुचिपूर्ण है! वोट दिया! – MarqueIV

5

आप क्या कर सकते हैं कि जब आप संलग्न ईवेंट हैंडलर में अपनी निर्भरता संपत्ति रजिस्टर। एक निर्भरता संपत्ति के लिए वाक्य रचना और कैसे PropertyChanged ईवेंट हैंडलर पर पुराने मूल्य प्राप्त करने के लिए नीचे दिए गए पाएं:

//Declaration of property 
public static readonly DependencyProperty MyNameProperty = 
      DependencyProperty.Register("MyName", typeof(PropertyType), 
             typeof(ClassName), 
             new PropertyMetadata(null, 
                  new PropertyChangedCallback(MyNameValueChanged))); 

//PropertyChanged event handler to get the old value 
private static void MyNameValueChanged(DependencyObject dependencyObject, DependencyPropertyChangedEventArgs eventArgs) 
{ 
    object oldValue = eventArgs.OldValue; //Get the old value 
} 
+10

-1 ओपी किसी अन्य व्यक्ति द्वारा लिखी गई संपत्ति को जोड़ने के बारे में पूछ रहा था, न कि नई संपत्ति कैसे बनाएं। –

+1

हालांकि यह सच है कि चयनित उत्तर उस स्थिति के लिए सही विकल्प है, यह सच है कि वीएस 1 का जवाब बिल्कुल मेरी स्थिति के लिए आवश्यक था। मैं उसका जवाब नहीं दूँगा, लेकिन मैं यह स्वीकार करना चाहता था कि उसके जवाब ने किसी को वास्तविक दुनिया में किसी समस्या का समाधान करने में मदद की। – CobaltBlue

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