यदि टीएल; डीआर: अंतिम पैराग्राफ देखें।अलग-अलग विचार, कमांड प्रस्तुति (टेक्स्ट, आइकन) और कमांड लॉजिक (निष्पादित करें, CanExecute)
शुद्ध WPF प्रस्तुति (नियंत्रण, टेक्स्ट, आइकन) को दृश्य-आदेश तर्क (निष्पादन, CanExecute विधियों) में कोड-पीछे में डालकर "सुझाव देता है"। तर्क दोनों को तर्क में डालने के अलावा (CommandBindings
) और कोड-पीछे अभ्यास पर फंसे होने के कारण, यह XAML डुप्लिकेशन: टेक्स्ट, आइकन, बड़े आइकन, संकेत, और कई अन्य गुणों के साथ डुप्लीकेट होना चाहिए प्रत्येक बार एक कमांड का उपयोग किया जाता है: मुख्य मेनू के लिए, संदर्भ मेनू के लिए, टूलबार बटन के लिए, रिबन बटन और अन्य नियंत्रणों के लिए।
पहली समस्या (वास्तव में विचारों और तर्क को अलग करना) की तरह दिखता है DelegateCommand
, RelayCommand
और इस तरह के दृष्टिकोण से हल किया जाता है। कमांड लॉजिक को व्यूमोडल्स (या एमवीवीएमसी के मामले में नियंत्रक) में स्थानांतरित किया जाता है, कोड-बैक साफ़ है, CommandBindings
और विचारों में अन्य बकवास नहीं है।
हालांकि, मुझे प्रस्तुति डुप्लिकेशन समस्या के लिए एक सामान्य रूप से स्वीकार्य समाधान नहीं मिल रहा है। मैं कमांड प्रस्तुति (टेक्स्ट, आइकन) और कमांड तर्क (Execute
, CanExecute
विधियों) को अलग करना चाहता हूं। सभी कोड जो मुझे मिल सकता है या तो कोड में प्रस्तुति डालता है (RoutedCommand
को Label
और Icon
) जैसे अतिरिक्त गुणों के साथ, या प्रस्तुतिकरण में कोड डालता है (यानी, दृश्यों और कोड-पीछे में हैंडलर)। मुझे या तो पसंद नहीं है। मुझे लगता है कि प्रस्तुति पूरी तरह से एक्सएएमएल में होनी चाहिए, और कोड सीएस में पूरी तरह से होना चाहिए (या तो व्यूमोडेल या कंट्रोलर में)।
प्रश्न: दृश्य (XAML नियंत्रण के साथ जो संदर्भ आदेशों), आदेशों की प्रस्तुति (लेबल, हर आदेश के लिए माउस आदि) और तर्क आदेशों की (Execute
के लिए सी # कोड, CanExecute
आदि को अलग करने के लिए कैसे ViewModels में या नियंत्रक)?
पहले से ही दो करीबी वोट? और शून्य टिप्पणियां? क्या सवाल अनावश्यक है या क्या मुझे कुछ याद आया? अगर आप बंद करने के लिए वोट देते हैं, तो कृपया कम से कम एक टिप्पणी छोड़ दें। अगर आप मुझे नहीं बताते कि मैंने क्या गलत किया है तो मैं नहीं सीख सकता। – Athari
एफएक्यू पर "गैर रचनात्मक" विवरण पढ़ें - "यह प्रश्न बहस, तर्क, मतदान, या विस्तारित चर्चा की मांग करेगा"। उसी टोकन द्वारा, स्टैक ओवरफ़्लो यह पूछने के लिए एक अच्छी जगह नहीं है कि "मुझे अपना सॉफ़्टवेयर कैसे बनाना चाहिए?" प्रशन। –
@ जेनहोमिनल जिस तरह से मैं इसे देखता हूं, मैंने नहीं पूछा है कि मेरे सॉफ़्टवेयर को कैसे बनाया जाए, मैंने एक समस्या के बारे में पूछा है जो मुझे लगता है * बहुत आम * है, इस पर विचार करते हुए कि मैंने कितना कोड देखा है जहां यह समस्या हल नहीं हुई है माइक्रोसॉफ्ट के कोड में भी। और वोटों के आधार पर निर्णय (20 विचारों से 5 +1 वोट), मैं अकेला नहीं हूं जो समाधान ढूंढना चाहता है। – Athari