मैं आमतौर पर एक अलग स्टाइल प्रोजेक्ट बनाता हूं, जिसे मैं उन परियोजनाओं से संदर्भित करता हूं जिन्हें मैं शैली बनाना चाहता हूं। मैं एक स्टाइल ResourceDictionary
बनाने के लिए,
हर नियंत्रण के लिए: स्टाइल परियोजना इस तरह एक निश्चित संरचना है। मेरे बटन के लिए उदाहरण के लिए:
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Style x:Key="PrimaryButtonStyle" TargetType="Button">
</Style>
<Style x:Key="ToolbarButton" TargetType="Button">
<Setter Property="BorderThickness" Value="0" />
<Setter Property="Margin" Value="3"/>
<Setter Property="Background" Value="Transparent"></Setter>
</Style>
</ResourceDictionary>
एक मुख्य ResourceDictionary
में, मैं अन्य सभी शब्दकोशों विलय, फ़ाइल IncaDesign.xaml, जो आप ऊपर चित्र में देख सकते हैं में इस मामले में:
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:controls="clr-namespace:Commons.Controls;assembly=Commons">
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Converter/Converter.xaml" />
<ResourceDictionary Source="Styles/Button.xaml" />
<ResourceDictionary Source="BitmapGraphics/Icons.xaml" />
</ResourceDictionary.MergedDictionaries>
<!-- Default Styles -->
<Style TargetType="Button" BasedOn="{StaticResource PrimaryButtonStyle}"></Style>
</ResourceDictionary>
ध्यान दें कि मैंने डिफ़ॉल्ट शैलियों को कैसे परिभाषित किया है, जो स्वचालित रूप से लागू होते हैं, जब तक आप अन्यथा निर्दिष्ट नहीं करते हैं। हर खिड़की या नियंत्रण में, जिसे आप शैली बनाना चाहते हैं, आपको केवल इस ResourceDictionary
को संदर्भित करने की आवश्यकता है। स्रोत की परिभाषा, जो विधानसभा (/Commons.Styling;component...
)
<UserControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/Commons.Styling;component/IncaDesign.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</UserControl.Resources>
डिफ़ॉल्ट शैलियों स्वचालित रूप से अब की स्थापना की जाएगी लिए एक संदर्भ है ध्यान दें, और आप स्पष्ट रूप से एक संसाधन का उपयोग करना चाहते हैं, आप StaticResource
का उपयोग कर ऐसा कर सकते हैं,।
<Viewbox Height="16" Width="16" Margin="0,0,10,0">
<ContentControl Content="{StaticResource FileIcon32}" />
</Viewbox>
यह मेरी राय है, जो मॉड्यूलर समाधान सहित बहुत जटिल समाधान, के लिए काम करता है, प्रिज्म के साथ बनाया गया उदाहरण के लिए में बहुत अच्छा समाधान है।
आप संसाधन डिक्शनरी बना सकते हैं और उसे क्लास लाइब्रेरी में जोड़ सकते हैं। आपको इसे अपने App.xaml पर संदर्भित करना होगा और आप कई परियोजनाओं में लाइब्रेरी का उपयोग कर सकते हैं –