2010-02-11 13 views
5

में डेटा टेम्पलेट का उपयोग कैसे करें मैं थोड़ी देर के लिए प्रिज्म का उपयोग कर रहा हूं और आनंद लेता हूं कि मेरे मॉड्यूल को कम करना कितना आसान है।प्रिज्म

यह विशेष रूप से विचारों और दृश्य मॉडल के लिए बहुत अच्छा काम करता है क्योंकि आप इंटरफेस और क्षेत्र प्रबंधक के माध्यम से दृश्यों के माध्यम से दृश्य मॉडल इंजेक्ट कर सकते हैं।

दुर्भाग्यवश यह केवल तभी काम करता है जब मेरे विचार पूर्ण उपयोगकर्ता उपयोगकर्ता नियंत्रण नहीं होते हैं जब तक कि मुझे यहां कुछ याद नहीं आ रहा है (और मैं ईमानदारी से आशा करता हूं)।

हालांकि कई बार, मैं एक व्यूमोडेल और एक मिलान डेटा टेम्पलेट बनाउंगा। इन्हें फिर एक दृश्य लिखने के लिए अन्य असेंबली द्वारा उपयोग किया जा सकता है।

मेरे समस्या है, कि मैं अपने XAML फाइल में युक्त विधानसभा संदर्भित है, तो बिना इन datatemplates की चर्चा करते हुए का कोई रास्ता नहीं मैं की तरह कुछ लिखने देखें:

<ResourceDictionary Source="pack://application:,,/......> 
बेशक

यह वास्तव में decoupled नहीं है, हालांकि मैं यह सुनिश्चित करने का प्रयास करता हूं कि मैं अपने कोड में कहीं और असेंबली का उल्लेख नहीं करता हूं।

एक और समाधान जिसे मैंने सोचा था, डेटामैप्लेट को इंफ्रास्ट्रक्चर प्रोजेक्ट में रखना था, लेकिन मुझे यह बहुत पसंद नहीं है, क्योंकि मुझे इसमें सब कुछ चाहिए जो मॉड्यूल से संबंधित है (इंटरफेस को छोड़कर पाठ्यक्रम)।

तो, क्या किसी के पास अच्छा कामकाज है, या क्या मुझे कुछ प्रिज्म सुविधा याद आती है?

उत्तर

2

मैं एक ऐसी सेवा बनाने का सुझाव दूंगा जो एप्लिकेशन में संसाधन शब्दकोश जोड़ने को समाहित करता है। स्रोत। मर्ज किए गए शब्दकोश संग्रह।

// Service interface (defined in the 'infrastructure' project) 
public interface IResourceAggregator 
{ 
    void AddResource(Uri resourceUri); 
} 

// Service implementation (implemented at the application/shell level) 
class ResourceAggregator : IResourceAggregator 
{ 
    public void AddResource(Uri resourceUri) 
    { 
     var resourceDictionary = new ResourceDictionary() { Source = resourceUri }; 
     var app = Application.Current; 
     app.Resources.MergedDictionaries.Add(resourceDictionary); 
    } 
} 

मैं तुम्हें "हल" होगा मॉड्यूल लोड होने के दौरान इस सेवा और इसका इस्तेमाल करते हैं "पंजी" करने के लिए संसाधन मॉड्यूल-स्थानीय शब्दकोशों उम्मीद करेंगे।

+0

यह काम करना चाहिए, इसके साथ एकमात्र नुकसान यह है कि मुझे अपने xaml फ़ाइल के अंदर कोई मदद नहीं मिलती है, अगर मैं इसमें स्पष्ट रूप से डेटामैप्लेट आयात नहीं करता हूं। जैसे Resharper चेतावनी देता है "संसाधन नहीं मिला" और मैंने फीडबैक खो दिया जो मुझे बताता है कि क्या मैंने सही इत्यादि की वर्तनी की है ... यदि मैं केवल डेटा टेम्पलेट्स को संदर्भित कर सकता हूं जैसे कि वे इंटरफेस थे ... –

0

मॉड्यूल शुरू होने पर आपको संसाधनों को मर्ज करने की आवश्यकता होगी। आप यहां इसके बारे में अधिक पढ़ सकते हैं: http://blogs.southworks.net/jdominguez/2008/09/presentation-model-with-datatemplates-in-compositewpf-prism-sample/

बेशक आप इस कार्यक्षमता को पुन: प्रयोज्य सेवा में आगे बढ़ा सकते हैं।

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