आप DialogVm
बना सकते हैं, जो सामान्य संवाद कार्यक्षमता प्रदान कर रहा है।
सबसे पहले, प्रस्तुति परत में एक संवाद के लिए क्या आवश्यक है? आमतौर पर, तीन बटन, की तरह ...
- लागू करें, रद्द और बंद (संशोधन संवाद)
- ठीक और रद्द या हाँ और नहीं (प्रश्न संवाद)
- ठीक (संदेश बॉक्स के मामले में)
तो जैसा कि आप देख सकते हैं, तो आप तीन आदेश (ICommand
doc) की जरूरत है। असल में, मैंने DelegateCommand
कार्यान्वयन बनाया है (this पर आधारित)। ICommand.CanExecute
निर्धारित करता है कि बाध्य बटन अक्षम या सक्षम है या नहीं। यदि कोई आदेश शून्य है, तो बटन छुपाया जाना चाहिए।
(आप सही लेआउट नियंत्रण का उपयोग कर रहे हैं, बटन की स्थिति, ठीक से समायोजित कर रहे हैं एक बटन नहीं दिखाया गया है।)
ऊपर चार से अधिक परिदृश्यों के लिए समर्थन प्रदान करने के लिए, मैं CommandTitle
संपत्ति DelegateCommand
पर जोड़ा गया, ताकि बटन की सामग्री वहां से आ रही है।
अगला बात आपको संवाद के शीर्षक के लिए Title
संपत्ति की आवश्यकता होगी। तो इसे DialogVm
पर जोड़ें।
यदि आप कमांड निष्पादित करके संवाद को बंद करने में सक्षम होना चाहते हैं (केवल आवश्यक है, यदि यह Window
का बच्चा है), तो आप this approach का पालन कर सकते हैं। बेशक मैंने संस्करण का उपयोग किया है, जिसे मैंने वहां वर्णित किया है। लेकिन अन्य भी आशाजनक दिख रहे हैं।
अंतिम खुला बिंदु एक संपत्ति है, जो विभिन्न संवाद सामग्री का प्रतिनिधित्व करता है। अगर मुझे इसे सही तरीके से याद है, तो मैंने दृश्य मॉडल का एक छोटा सा सेट और DataTemplates
(और निश्चित रूप से TemplateSelector
, जो वीएम प्रकार के आधार पर सही टेम्पलेट प्रदान कर रहा है) का उपयोग किया है। बेशक आपको अपने संवाद में ContentPresenter
नियंत्रण की भी आवश्यकता होगी, जो TemplateSelector
द्वारा प्रदत्त DataTemplate
दिखा रहा है।
यह केवल downsite, है केवल एक अच्छा दृष्टिकोण, यह अगर आप केवल कुछ अलग संवाद प्रकार है (जैसे प्रश्न बॉक्स, संदेश बॉक्स ...)
उपयोग बहुत आसान है। सीधे शब्दों में, वांछित ICommand
तर्क, DialogContentVm (जब चाहें इसका कॉल करने के लिए), यह DialogWindow के पास के साथ एक DialogVm
उदाहरण प्रारंभ (शायद, आप sth उपयोग करना चाहते हैं। विभिन्न जैसे एक flyout) और को प्रस्तुत उपभोक्ता।
अच्छी तरह से मुझे उम्मीद है कि यह मदद करता है। अगर आपको अधिक जानकारी या कोई मदद चाहिए, तो कृपया मुझे बताएं।
कुछ अनुकूलन के साथ यह प्रयोग योग्य दिखता है।मैं नेविगेशन, सिर्फ सादा मेनू और बटन कमांड का उपयोग नहीं कर रहा हूं, लेकिन यह इस परिदृश्य में सिर्फ छोटी बात है। और बाद में। धन्यवाद। – ProfK
चूंकि यह आपकी समस्या का एक व्यावहारिक समाधान है, इसे उत्तर के रूप में चिह्नित करने के बारे में कैसे? –