पर निर्भर करती है, एक निर्भरता संपत्ति कैसे पंजीकृत कर सकता है जिसका मूल्य किसी अन्य निर्भरता संपत्ति के मूल्य का उपयोग करके गणना की जाती है?निर्भरता संपत्ति किसी अन्य
क्योंकि .NET प्रॉपर्टी रैपर को रन-टाइम पर WPF द्वारा छोड़ा जाता है, इसलिए किसी को गेटर्स और सेटर्स में तर्क शामिल नहीं करना चाहिए। इसका समाधान आमतौर पर PropertyChangedCallback
एस का उपयोग करना है। लेकिन उनको स्थिर घोषित किया जाता है।
public bool TestBool
{
get { return (bool)GetValue(TestBoolProperty); }
set
{
SetValue(TestBoolProperty, value);
TestDouble = ((value)?(100.0):(200.0)); // HERE IS THE DEPENDENCY
}
}
public static readonly DependencyProperty TestBoolProperty =
DependencyProperty.Register("TestBool", typeof(bool), typeof(ViewModel));
public double TestDouble
{
get { return ((double)GetValue(TestDoubleProperty)); }
set { SetValue(TestDoubleProperty, value); }
}
public static readonly DependencyProperty TestDoubleProperty =
DependencyProperty.Register("TestDouble", typeof(double), typeof(ViewModel));
जब तक निर्भरता परिपत्र नहीं है, वहाँ यह पूरा करने के लिए एक उचित साधन है:
उदाहरण के लिए, उचित तरीके से इस काल्पनिक कार्य को पूरा करने के लिए क्या है?
'CoerceValueCallback' का उपयोग करने का क्या फायदा है जैसा आपने एक निर्भरता संपत्ति को प्रत्यक्ष रूप से बदलकर बना दिया है, एक अन्य निर्भरता संपत्ति के' PropertyChangedCallback' के रूप में opedog किया था? मैं आपके द्वारा लिंक किए गए दस्तावेज से इकट्ठा करता हूं कि आपका अधिक उचित तरीका है, लेकिन मैं व्यावहारिक अंतर के बारे में उत्सुक हूं। – Gregyski
ठीक है, जोड़े को नाम देने के लिए: यह इस संपत्ति के लिए बाइंडिंग नहीं तोड़ता है (यानी यदि यह संपत्ति बाध्यकारी अभिव्यक्ति का लक्ष्य है तो यह कोरिंग के बाद काम करेगी लेकिन स्पष्ट सेट के बाद खो जाएगी); निर्भरता संपत्ति मूल्य संकल्प में इसकी उच्च प्राथमिकता है (यानी यदि आप प्रोपा = "कुछ" कहते हैं जिसका अर्थ यह नहीं है कि प्रोपा == "कुछ", क्योंकि मजबूती उस असाइनमेंट को अनदेखा कर सकती है); यह आपकी संपत्ति के पुराने मूल्य को याद करता है (यानी अगली बार जब आप CoerceValue() को कॉल करेंगे तो आपको टेस्टडबल का मूल मान मिलेगा, न कि स्थानीय रूप से सेट किया गया था) – Anvaka