2009-02-23 5 views
8

में प्रयोज्य उपयोगकर्ता नियंत्रण मैं WPF में UserControl कैसे बना सकता हूं जिसमें मूलभूत डिफ़ॉल्ट शैली है लेकिन आवश्यकता होने पर आसानी से थीम भी हो सकती है?डब्ल्यूपीएफ

क्या आपके पास कुछ अच्छे दिशानिर्देश, ब्लॉग प्रविष्टियां या उदाहरण हैं जो इस विशिष्ट विषय को समझाते हैं?

इस लेख पर मार्को

उत्तर

1

देखो, अग्रिम धन्यवाद: http://msdn.microsoft.com/en-us/magazine/cc135986.aspx

यह कैसे एक नियंत्रण है कि आप नियंत्रण में बनाया की तरह एक ControlTemplate साथ बदल सकते हैं, लिखने के बारे में बात करती है।

+0

लिंक मर चुका है :(आप लेख याद है – Default

7

WPF विषयों में XAML का एक सेट फ़ाइलें प्रत्येक एक ResourceDictionary जो शैली और खाका परिभाषाओं कि आवेदन में इस्तेमाल किया नियंत्रण के लिए लागू रखती युक्त बस कर रहे हैं। एक विषय फ़ाइल ऐसा दिखाई दे सकता: एक WPF आवेदन में विषयों के लिए

<ResourceDictionary 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:uc="clr-namespace:MyApp.UserControls"> 

    <!-- Standard look for MyUserControl --> 
    <Style x:Key="Standard" TargetType="{x:Type uc:MyUserControl}"> 
    <Setter Property="Width" Value="22" /> 
    <Setter Property="Height" Value="10" /> 
    </Style> 

</ResourceDictionary> 

समर्थन स्पष्ट रूप से विधानसभा के लिए निम्न विशेषता जोड़कर सक्षम होना चाहिए:

[assembly: ThemeInfo(
    ResourceDictionary.None, 
    ResourceDictionaryLocation.SourceAssembly 
)] 

इस WPF निर्देश देगा देखने के लिए एप्लिकेशन के नियंत्रणों का डिफ़ॉल्ट रूप निर्धारित करने के लिए एम्बेडेड संसाधन फ़ाइल थीम \ generic.xaml कहा जाता है।

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

<ResourceDictionary 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:uc="clr-namespace:MyApp.UserControls;assembly=MyApp"> 

    <!-- Standard look for MyUserControl in the MyApp assembly --> 
    <Style x:Key="{ComponentResourceKey {x:Type uc:MyUserControl}, Standard}"> 
    <Setter Property="Width" Value="22" /> 
    <Setter Property="Height" Value="10" /> 
    </Style> 

</ResourceDictionary> 
+0

"अच्छा नमूना" लिंक मृत –

+0

@SvenHecht धन्यवाद उनका कहना है कि बाहर के लिए है मैं मर लिंक संदर्भ हटाया । –