2009-04-01 11 views
62

मेरे पास कुछ WPF एप्लिकेशन हैं और मैं चाहता हूं कि मेरी सभी शैलियों को प्रत्येक एप्लिकेशन में अलग-अलग घोषित करने के बजाय साझा असेंबली में होना चाहिए।बाहरी फ़ाइल या असेंबली से WPF शैलियों या अन्य स्टेटिक संसाधन लोड करें

मैं एक रास्ता तलाश रहा हूं इसलिए मुझे मौजूदा अनुप्रयोगों में अपने सभी Style="{StaticResource BlahBlah}" को बदलने की ज़रूरत नहीं है; मैं सिर्फ इस शैली असेंबली के संदर्भ को जोड़ना चाहता हूं, और इसे वर्तमान एप्लिकेशन से हटा देना चाहता हूं, इसलिए इसे असेंबली से लिया गया है।

क्या कोई रास्ता है?

उत्तर

108

एक बाहरी ResourceDictionary संदर्भित (XAML फाइल):

<Application.Resources> 
    <ResourceDictionary Source="MyResources.xaml" /> 
</Application.Resources> 

एक बाहरी ResourceDictionary संदर्भित (DLL):

<Application.Resources> 
    <ResourceDictionary Source="/MyExternalAssembly;component/MyResources.xaml" /> 
</Application.Resources> 
+0

लेकिन आप कहते हैं कि हम कैसे एक शैली है जो संसाधन में मौजूद है ओवरराइड कर सकते हैं कृपया अन्य असेंबली में xaml फ़ाइल? उदाहरण के लिए: एक शैली जिसमें अग्रभूमि संपत्ति सेट है और यह एक डिफ़ॉल्ट शैली है (जिसमें कोई x: कुंजी नहीं है)। तो मैं सिर्फ पृष्ठभूमि संपत्ति बदलना चाहता हूँ। तो मैंने बेसऑन का इस्तेमाल किया, लेकिन यह काम नहीं करता है। :( –

+3

@amkh, एक बार उस शैली को दायरे में आयात किया जाता है, तो आप इसे फिर से रेखांकित कर सकते हैं और इसे उच्च स्कोप स्तर पर एक नई शैली बनाने के लिए ओवरराइड कर सकते हैं, यह 'आधारितऑन' '{StaticResource {x: Type TextBox}}' (टेक्स्टबॉक्स को बदलना ' उपयुक्त प्रकार के साथ। – Shimmy

+0

बहुत बहुत धन्यवाद। मेरी गलती यह थी कि मैं आधार पर एक गलत स्थान पर शैली बना रहा था, जबकि मैं आधारितऑन –

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