2009-09-17 20 views
6

कल्पना कीजिए: आपके पास एक मास्टर-चाइल्ड विंडो है जिसमें आइटम (मास्टर विंडो) और नियंत्रण का एक सेट शामिल है जहां आप वर्तमान में चयनित आइटम को संपादित कर सकते हैं (चाइल्ड विंडो)। बच्चे की खिड़की में "लागू करें" और "रद्द करें" बटन हैं।डब्ल्यूपीएफ: सूची बॉक्स में चयन परिवर्तन को रोकना या उलटना

एक उपयोगकर्ता संपादन मूल्यों शुरू होता है। फिर वह "लागू करें" बटन दबाए जाने से पहले चयन को बदल देता है।

आपका आवेदन संदेश "वर्तमान आइटम में परिवर्तन लागू करें?", बटन किया जा रहा है "हाँ", "नहीं" और "रद्द करें" के साथ प्रदर्शित करता है। उपयोगकर्ता प्रेस तो "रद्द करें" वर्तमान चयन असफल चाहिए बदलते पर प्रयास।

"CurrentSelection" आइटम databound है।

मैंने सोचा कि मैं CurrentSelection संपत्ति के "सेटर" भाग में इस समस्या से निपटने कर सकते हैं। उपयोगकर्ता का चयन करता है "रद्द करें", मैं बस CurrentSelection आइटम रखने के रूप में यह है, और एक PropertyChanged अधिसूचना ईवेंट सक्रिय पुराने चयनित आइटम को अद्यतन करने के लिए प्रपत्र में बताने के लिए। नियंत्रण इस अधिसूचना घटना को अनदेखा कर रहा है। (जो समझ में आता है, नियंत्रण कह रहा है "मुझे पता है कि वर्तमान चयन बदल गया है। मैंने इसे अभी बदल दिया है!")

कोई विचार यह कैसे ठीक करें? संक्षेप में, नियंत्रण SelectedItem को बाध्य करने का प्रयास करता है, और मैं इसे बताना चाहता हूं "नहीं, आप अभी इस चयनित आइटम को नहीं बदल सकते हैं"।

उत्तर

1

बस इसका परीक्षण किए बिना एक विचार: संपत्ति को एक अलग संदेश में बदलने की कोशिश करें। संपत्ति मूल्य को बदलते समय सूची में शायद किसी भी अधिसूचना को अनदेखा करने के लिए एक लच है। यदि आप एक अलग संदेश भेजते हैं जिसमें अधिसूचना है, तो लोच को रीसेट किया जाना चाहिए और इसे इसे संभालना चाहिए।

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