2009-05-13 8 views
6

मैं अपने App.xaml के निर्माण कार्रवाई "पृष्ठ" इसलिए मैं एक स्प्लैश स्क्रीन संभालने के लिए और एक उदाहरण के रूप में यकीन है कि मेरे आवेदन रन बना सकता है के लिए बदल में संसाधनों के उपयोग केवल (मेरा अपना प्रवेश बिंदु है)। यह रन-टाइम में ठीक काम करता है लेकिन डिज़ाइन-टाइम में एप्लिकेशन अब मेरे संसाधन नहीं देख सकता है। संसाधन एक ही परियोजना में स्थित अलग xaml फ़ाइलों में हैं। मैं अपने ऐप को फिर से डिज़ाइन-समय में संसाधनों को कैसे देख सकता हूं?WPF - डिजाइन समय था जब App.xaml के बिल्ड क्रिया = पृष्ठ

धन्यवाद

+0

मैं आगे और पीछे स्विच कर सकते हैं - पृष्ठ को App.xaml के निर्माण कार्रवाई बदल जब मैं प्रकाशित करने और इसे वापस स्विच विकास में करने के लिए तैयार हूँ। लेकिन क्या यह मुझे करना है? –

उत्तर

0

तो मैं समझता हूँ कि आप को सही, आप App.xaml में आवेदन चौड़ा संसाधनों लोड कर रहे हैं? इस मामले में आप इस तरह कर सकते हैं: तो फिर


App app = new App(); 
//Get assembly name is your own method 
string assemblyName = GetAssemblyName(Assembly.GetExecutingAssembly()); 

Uri resourceLocater = new Uri("/" + assemblyName + ";component/app.xaml", UriKind.Relative); 
System.Windows.Application.LoadComponent(app, resourceLocater); 
MainWindow mainWindow = new MainWindow(); 
app.Run(mainWindow); 

अपने संसाधनों लोड किया जाएगा

/डैनियल

+6

मूल प्रश्न कहता है कि समस्या केवल डिजाइन-समय पर होती है। ऐसा लगता है कि उपर्युक्त कोड का डिजाइन समय पर कोई प्रभाव नहीं पड़ेगा। मैं क्या खो रहा हूँ? (मैं एक ही समस्या है: यह क्रम में ठीक काम करता है, लेकिन मैं 'StaticResource संदर्भ ... नहीं त्रुटि पाई' डिजाइन समय पर मिल) – CyberMonk

+1

यह मदद नहीं करेगा। मैंने अभी जो जवाब जोड़ा है उसे देखें। गुस्तावो, आपने इसे सही क्यों चिह्नित किया? –

3

सुनिश्चित करें कि आप अपने आवेदन की निर्माता की पहली पंक्ति के रूप में InitializeComponent() बुला रहे हैं:

public App() 
{ 
    // This is the method generated by VisualStudio that initializes 
    // the application from associated XAML file 
    InitializeComponent(); 

    // Do everything else 
} 
+1

ओएमजी, मेरा मतलब ओएमएफजी है। मैं डिज़ाइनर के साथ संघर्ष कर रहा हूं जो मेरे स्थिर संसाधनों को एक अलग नियंत्रण परियोजना में नहीं ढूंढ रहा है, जहां मुख्य प्रोजेक्ट में app.xaml है जो शब्दकोशों को लोड और विलय करता है। नियंत्रण प्रोजेक्ट में एक App.xaml बनाना और फिर इसे संसाधन शब्दकोशों के लिए अलग करना और उस प्रारंभिक कॉम्पोनेंट() कॉल ने पूरी तरह से अप्रत्याशित किया - यह काम किया! नियंत्रण में नियंत्रण अब गायब संसाधनों के बारे में शिकायत करने के बजाय प्रतिपादन कर रहे हैं, xaml दृश्य में इंटेलिजेंस त्रुटियां भी चली गई हैं - ओह खुश दिन !!!! – Erikest

6

अपने संसाधनों को एक अलग संसाधन शब्दकोश में फैक्टर करें और फिर उन्हें App.xaml में खींचें:

<Application.Resources> 
    <ResourceDictionary> 
     <ResourceDictionary.MergedDictionaries> 
      <ResourceDictionary Source="MasterResources.xaml" /> 
     </ResourceDictionary.MergedDictionaries> 
    </ResourceDictionary> 
</Application.Resources> 

आप आवश्यकतानुसार संसाधन कई शब्दकोशों इस तरह से जोड़ सकते हैं।

तुम भी (और Windows कि संसाधनों का उपयोग संदर्भ UserControls) UserControls में एक ही बात करने की जरूरत है:

<UserControl.Resources> 
    <ResourceDictionary> 
     <ResourceDictionary.MergedDictionaries> 
      <ResourceDictionary Source="MasterResources.xaml" /> 
     </ResourceDictionary.MergedDictionaries> 
    </ResourceDictionary> 
</UserControl.Resources> 

इस विषय पर अधिक के लिए http://ithoughthecamewithyou.com/post/Merging-Resource-Dictionaries-for-fun-and-profit.aspx देखें।

+6

जब मैं इस दृष्टिकोण का उपयोग किया है, मैं संसाधनों प्रत्येक UserControl कि उन में विलीन हो जाती है, जो स्मृति horribleness की ओर जाता है के लिए MasterResources.xaml में परिभाषित की अलग प्रतियों के साथ समाप्त हो गया है। –

+2

बिल्कुल। साझा करने या ग्राफिक्स संसाधनों और यूआई घटकों के बीच शैलियों एक WPF यूआई कोडिंग की एक प्रमुख पहलू है, अभी तक वहाँ सब पर डिज़ाइन मोड में इसके लिए किसी भी समर्थन होने के लिए नहीं लगता है, और एमएस सिफारिश सिर्फ संसाधनों हर जगह आप का उपयोग कॉपी करने के लिए वे सादा बकवास है। – Neutrino

+0

यह स्वीकार्य उत्तर होना चाहिए। विशेष रूप से लिंक वास्तव में उसी परिदृश्य का वर्णन करता है जो प्रश्न में उठाया गया था। मैं भी एक ही समस्या में आया हूं, और पाया कि दुर्भाग्य से प्रत्येक एकल विंडो में उपयोगकर्ता विलय करना और उपयोगकर्ता नियंत्रण संसाधनों को हल करने में असफल होने वाले डिजाइनर का एकमात्र समाधान है।डब्ल्यूपीएफ इस महान तकनीक के रूप में माना जाता है, लेकिन हाल ही में मुझे लगता है कि मुझे इसे काम करने के लिए एक हैक का उपयोग करने के लिए मजबूर होना पड़ता है। – Eternal21

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