2013-12-18 4 views
7

मैं एक्सएएमएल के लिए फैक्ट्री पैटर्न का एक प्रकार कार्यान्वित करना चाहता हूं। मैंने WinRT के लिए एक ऐप बनाया जहां मैंने दो xaml शैली फ़ाइलों को परिभाषित किया। असल में, जो मैं प्राप्त करना चाहता हूं (यदि संभव हो) एप्लिकेशन शुरू होने पर दो xaml फ़ाइल में से एक लोड करना है। समाधान एक्सप्लोरर में मैं इस है:एक्सएएमएल विनरेट - कस्टम स्टाइल के लिए फैक्टरी पैटर्न

enter image description here

CustomStyles foder शैली फ़ाइलें हैं। तो, मेरी App.xaml.cs फ़ाइल

public enum Style 
{ 
    Style_1, 
    Style_2 
} 

में एक प्रगणक के आधार पर अगर मैं चुनें Style_1 मैं XAML फाइल Style_1.xaml बाकी Style_2.xaml पर लोड करना चाहते हैं रन-टाइम। दोनों स्टाइल फाइलों में, अलग-अलग संपत्ति मूल्यों के साथ बटन शैली, टेक्स्टब्लॉक शैली आदि की एक ही परिभाषा है। यहाँ एक उदाहरण:

Style_1.xaml

<Style x:Key="Attribute_Label" TargetType="TextBlock"> 
    <Setter Property="FontFamily" Value="Segoe UI" /> 
    <Setter Property="Foreground" Value="#78CAB3" /> 
    <Setter Property="FontSize" Value="15" /> 
    <Setter Property="FontWeight" Value="Normal" /> 
</Style> 

Style_2.xaml

<Style x:Key="Attribute_Label" TargetType="TextBlock"> 
    <Setter Property="FontFamily" Value="Arial" /> 
    <Setter Property="Foreground" Value="#606060" /> 
    <Setter Property="FontSize" Value="30" /> 
    <Setter Property="FontWeight" Value="Normal" /> 
</Style> 

प्राप्त करने के लिए मुझे क्या करना चाहते हैं एक तरीका होता है? पहले ही, आपका बहुत धन्यवाद।

+1

ऐसा लगता है कि आप [थिंगिंग] (http://stackoverflow.com/questions/11150570/how-to-implement-theming-in-wpf) की तलाश में हैं। मुझे यकीन नहीं है कि WinRT XAML के लिए किस स्तर का समर्थन है, हालांकि। –

+0

क्या आपको अभी भी एक बक्षीस की आवश्यकता है? :) – pinckerman

+0

यदि आप अधिक प्रतिष्ठा जोड़ना चाहते हैं, तो नि: शुल्क महसूस करें :) – davideberdin

उत्तर

2

हम अंत कुछ इस तरह करना है:

  1. सभी CustomStyles

  2. हम एक सर्वर अनुरोध फैसला करता है कि कस्टम शैली के लिए है जो कर के साथ App.xaml में एक ResourcesDictionary को परिभाषित कोड Application.Current.Resources[CustomStyleVariable]; के इस टुकड़े का उपयोग कर लोड किया जा

  3. हम एक शैली वस्तु में पूरी शैली लोड।

हमें अभी तक कोई बेहतर समाधान नहीं मिला है, लेकिन ऐसा लगता है।

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