2010-11-22 10 views
6

क्या स्टाइल में संसाधन डिक्शनरी को परिभाषित करना संभव है?क्या मैं स्टाइल में संसाधन या संसाधन डिक्स जोड़ सकता हूं?

उदाहरण के लिए, मान लीजिए कि मैं स्टैकपैनल्स के लिए दो अलग-अलग शैलियाँ रखना चाहता हूं और एक में मैं सभी बटनों को नीला होना चाहता हूं और दूसरा मैं चाहता हूं कि वे लाल हों। क्या यह संभव है? उपरोक्त कोड

कुछ

तरह
<Style x:Key="RedButtonsPanel" TargetType="{x:Type StackPanel}"> 
    <Setter Property="Orientation" Value="Horizontal" /> 
    <Setter Property="StackPanel.Resources"> 
     <Setter.Value> 
      <ResourceDictionary> 
       <Style TargetType="{x:Type Button}"> 
        <Setter Property="Background" Value="Red" /> 
       </Style> 
      </ResourceDictionary> 
     </Setter.Value> 
    </Setter> 
</Style> 

एक सेटर की संपत्ति मूल्य के बारे में एक त्रुटि के साथ विफल नल नहीं हो सकता (हालांकि यह स्पष्ट रूप से अशक्त नहीं है)।

मैं अगर वहाँ शैली में ResourceDictionary मर्ज करने के लिए एक तरीका था हालांकि मैं सोच रहा था की तरह

<ResourceDictionary x:Key="RedButtons"> 
    <Style TargetType="{x:Type Button}"> 
     <Setter Property="Width" Value="100" /> 
     <Setter Property="Background" Value="Red" /> 
    </Style> 
</ResourceDictionary> 

<StackPanel Resources={StaticResource RedButtons} /> 

कुछ कर सकते हैं।

उत्तर

4

StackPanel.ResourcesDependencyProperty नहीं है और इसलिए मुझे विश्वास नहीं है कि आप उस संपत्ति को शैली के भीतर सेट करने में सक्षम होंगे।

+0

धन्यवाद, मुझे लगता है कि आप शायद सही हो। मैं संसाधन संपत्ति के साथ एक डायनामिक रिसोर्स का उपयोग नहीं कर सकता। – Rachel

3

प्रत्येक लक्ष्य प्रकार के लिए स्टाइल (ओं) को डॉकपैनेल स्टाइल में जोड़ने का प्रयास करें। स्रोत।

मैंने कुछ डॉकपैन स्टाइल के समान कुछ किया। सभी बटन या सेपरेटर्स को लगातार तरीके से स्टाइल करने के लिए डॉकपैनल में जोड़ा गया था।

यहां एक नमूना है:

<Style x:Key="DockPanelToolBarStyle" TargetType="{x:Type DockPanel}"> 
    <Style.Resources> 
    <Style TargetType="Button" BasedOn="{StaticResource ButtonToolBarStyle}" /> 
    <Style TargetType="Separator" BasedOn="{StaticResource SeparatorToolBarStyle}" /> 
    </Style.Resources> 
    <Setter Property="Height" Value="45"/> 
    <Setter Property="Background" Value="{StaticResource ToolBarBrush}"/> 
</Style>