मेरे विंडोज स्टोर ऐप में मेरे पास ExpandoObjects के साथ एक सूची है। डेटा बाइंडिंग प्रारंभिक मान के लिए ठीक है, लेकिन एक छवि संपत्ति मैं asyncronously सेट करने के बाद एक फाइल डाउनलोड किया गया है के लिए नहीं काम करता है:ExpandoObject के लिए बाध्यकारी। PropertyChanged काम नहीं कर रहा
public static async void Set<T>(this ExpandoObject thisObject, string property, Func<Task<T>> setter) {
var expando = thisObject as IDictionary<string, Object>;
if (!expando.ContainsKey(property)) {
expando.Add(property, null);
}
expando[property] = await setter.Invoke();
}
Hooking ExpandoObject पर PropertyChanged घटना अप करने के लिए पुष्टि की है कि यह सभी वस्तुओं के लिए निकाल दिया गया है। नई संपत्ति ऑब्जेक्ट से जुड़ी है और मान सही है, लेकिन ListView में आइटम पूर्ण रूप से अपडेट नहीं किए गए हैं।
सूची में 14 ऑब्जेक्ट्स हैं। यदि मैं ExpandoObjects की बजाय नियमित टाइप की गई वस्तुओं का उपयोग करता हूं और छवि प्रॉपर्टी की समान एसिंक सेटिंग का उपयोग करता हूं, तो 14 में से कुछ ऑब्जेक्ट दृश्य में अपडेट हो जाते हैं (जो वर्तमान में दिखाई नहीं दे रहे हैं)। यदि मैं कक्षा में बदलकर INotifyProperty को लागू करता हूं तो सभी 14 अपडेट हो जाते हैं। ExpandoObjects का उपयोग करके मुझे टाइप किए गए ऑब्जेक्ट्स के साथ आईएनपीसी के बिना सटीक व्यवहार मिलता है: वर्तमान में दिखाई नहीं दे रहे आइटम अपडेट किए गए हैं।
तो ऐसा लगता है कि PropertyChanged ExpandoObject और डेटा बाइंडिंग के साथ काम नहीं कर रहा है।
यह WPF में इच्छित कार्य करता है, लेकिन स्टोर ऐप में नहीं। तुलना देखें: https://sites.google.com/site/moramatte/ExpandoComparison.zip?attredirects=0&d=1
PropertyChanged ExpandoObject में काम करता है, सरल नमूना [यहां] को देखने के (http://pastebin.com/pyKCiGG4)। समस्या कुछ और होना चाहिए। कृपया एक छोटा लेकिन पूरा उदाहरण प्रदान करें जो इस व्यवहार को पुन: उत्पन्न करता है। –
यह WPF में लक्षित के रूप में काम करता है, लेकिन स्टोर ऐप में नहीं। मेरी सरल तुलना देखें: https://sites.google.com/site/moramatte/ExpandoComparison.zip?attredirects=0&d=1 – user958578
मैंने कनेक्ट बग दायर किया: https://connect.microsoft.com/VisualStudio/feedback/ विवरण/836,252/बाइंडिंग-इन-windows-दुकान-क्षुधा करने वाली एक-expandoobject-परिवर्तन-सूचना देने वाला नहीं काम –