2009-02-12 9 views
6

यदि मैं डब्ल्यूपीएफ के साथ कस्टम नियंत्रण बनाता हूं, तो मैं वर्तमान में लागू थीम (एयरो, लुना, क्लासिक इत्यादि) से मेल खाने वाले नियंत्रण के लिए शैलियों को कैसे प्रदान कर सकता हूं?मैं अपने नियंत्रण की शैलियों को वर्तमान थीम से कैसे मेल करूं? (डब्ल्यूपीएफ)

उदाहरण के लिए मैं जब एयरो का उपयोग कर निम्नलिखित लागू करना चाहते हैं:

<Style> 
    <Setter Property="Background" Value="White"/> 
</Style> 

लेकिन जब लूना का उपयोग कर तो एक अलग शैली लागू होते हैं:

<Style> 
    <Setter Property="Background" Value="#DFDFDF"/> 
</Style> 

मैं किसी भी तरह के आधार विषयों का विस्तार कर सकते हैं मेरे नए नियंत्रण के लिए समर्थन प्रदान करते हैं?

उत्तर

7

कुछ लिंक है कि मददगार साबित हो सकता है:

http://arbel.net/blog/archive/2006/11/03/Forcing-WPF-to-use-a-specific-Windows-theme.aspx

http://www.browsoft.com/tutorials/DefaultTheme.html

http://blogs.msdn.com/wpfsdk/archive/2007/07/31/using-themes-with-custom-controls.aspx

मूल रूप से आप संसाधन शब्दकोशों बनाने के इस तरह नामित अपने कस्टम नियंत्रण के लिए:

Classic.xaml (“Classic” Windows 9x/2000 look on Windows XP.) 
Luna.NormalColor.xaml (Default blue theme on Windows XP.) 
Luna.Homestead.xaml (Olive theme on Windows XP.) 
Luna.Metallic.xaml (Silver theme on Windows XP.) 
Royale.NormalColor.xaml (Default theme on the Windows XP Media Center Edition operating system.) 
Aero.NormalColor.xaml (Default theme on the Windows Vista operating system.) 

उन फ़ाइलों में अपने नियंत्रण के लिए विभिन्न शैलियों को रखें और उन्हें ओएस के वर्तमान विषय के आधार पर लोड किया जाएगा।

+0

ये लिंक उपयोगी हैं, धन्यवाद। मेरे लिए मुख्य बिंदु AssemblyInfo.cs में एक बदलाव था - [ThemeInfo] विशेषता का थीम डिक्शनरी 'किसी भी' से 'SourceAssembly' तक स्थानांतरित करना। – ajlane

0

आप संसाधन शब्दकोशों को लोड/अनलोड करके WPF में विभिन्न विषयों का उपयोग कर सकते हैं। इन शब्दकोशों में आपके नियंत्रण के लिए शैली होनी चाहिए। जब आप शब्दकोशों को स्वैप करते हैं, तो WPF आपके नियंत्रण में शैलियों को लागू करेगा।

उदाहरण के लिए यदि यह WhiteStyle.xaml में था और आपने इसे लोड किया, तो आपके टेक्स्टब्लॉक सभी एक सफेद रंग के फ़ॉन्ट में टेक्स्ट प्रदर्शित करेंगे।

<Style TargetType="TextBlock"> 
    <Setter Property="Foreground" Value="White"/> 
</Style> 

अगर आप इसे BlackStyle.xaml के लिए बदली

<Style TargetType="TextBlock"> 
    <Setter Property="Foreground" Value="Black"/> 
</Style> 

अपने textblocks एक काले रंग का फ़ॉन्ट में पाठ प्रदर्शित हैं जो। डब्ल्यूपीएफ हमारे लिए ब्योरे का बहुत से संभालता है, हमें सिर्फ यह बताना होगा कि विवरण क्या हैं।

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

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