मैंने एक कुंजी के आधार पर स्ट्रिंग्स का अनुवाद करने के लिए मार्कअप एक्सटेंशन बनाया है। उदाहरणमैं मार्कअप एक्सटेंशन के अंदर डेटाबेस के मान को कैसे हल करूं?
<TextBlock Text="{Translate myKey}" />
अब मैं अपनी चाबियाँ प्रदान करने के लिए नेस्टेड बाइंडिंग का उपयोग करने में सक्षम होना चाहता हूं। उदाहरण:
<TextBlock Text="{Translate {Binding KeyFromDataContext}}" />
जब मैं ऐसा करता हूं तो मुझे सिस्टम प्राप्त होता है। Windows.Data. बाइंडिंग ऑब्जेक्ट। ProvideValue बुला और ServiceProvider नीचे पारित करके मैं एक BindingExpression प्राप्त कर सकते हैं:
var binding = Key as Binding;
if (binding == null) {
return null;
}
var bindingExpression = binding.ProvideValue(_serviceProvider) as BindingExpression;
if (bindingExpression == null) {
return null;
}
var bindingKey = bindingExpression.DataItem;
मैं इस bindingExpression प्राप्त कर सकते हैं, लेकिन DataItem संपत्ति रिक्त है। मैंने इस
<TextBlock Text="{Binding KeyFromDataContext}" />
और यह ठीक काम करता है जैसे मेरी बाध्यकारी का परीक्षण किया है।
कोई विचार?
क्या होगा यदि बाध्यकारी मान बदलता है, तो ProvideValue को फिर से कॉल नहीं किया जाता है? क्या इसका कोई समाधान है? – Haytam
@ हैटम सवाल बाध्यकारी के मूल्य को हल करने के बारे में था। यदि आपको संदेह है कि यह बदल सकता है - तो आप इसके बजाय एक और बाध्यकारी वापस कर सकते हैं जो 'Value' से बांधता है और कनवर्टर का उपयोग करता है। – torvin
क्या आप कृपया बता सकते हैं कि संलग्न संपत्ति कैसे काम करती है? मुझे हमेशा 'लक्ष्य' से 'null' मिल रहा है। GetValue()' ... – spacer