2011-11-03 21 views
6

वहाँ WPF में कुछ इस तरह निर्दिष्ट करने के लिए एक तरीका है:व्यापक शैलियों

सीएसएस:

#someSpan input { color: #f1f1f1; } 
or 
span input { color: #f1f1f1; } 

जिसका अर्थ है, मैं कंटेनर के भीतर सभी TextBlock तत्व करना चाहते हैं प्रत्येक शैली को शैली लागू करने के लिए x शैली का पालन करें, w/out।

बस स्पष्ट करने के लिए, मुझे WPF में ऐसा कुछ करने की आवश्यकता है।

मैं एक शैली के basedon विशेषता के बारे में पता है .. लेकिन यह है कि मैं यहाँ

इस

<Style x:Key="FileItem" TargetType="{x:Type #SomeContainer TextBlock}"> 

या शायद SomeContainer भीतर की तरह कुछ की तलाश में के लिए काफी क्या देख रहा हूँ, एक TextBlock जोड़ नहीं है स्टाइल जो इसके सभी टेक्स्टब्लॉक पर लागू होगी

+0

क्या इससे समस्या हल हो जाती है? http://stackoverflow.com/questions/5745001/xaml-combine-styles –

उत्तर

4

अपने प्रश्न के अंतिम भाग के बारे में, यदि आप किसी विशेष तत्व के भीतर सभी TextBlock एस में शैली लागू करना चाहते हैं, तो बस उन तत्वों के भीतर Style डालें rces:

<TextBlock /> <!-- unaffected --> 

<Grid> 
    <Grid.Resources> 
     <Style TargetType="TextBlock"> 
      <!-- ... --> 
     </Style> 
    </Grid.Resources> 

    <TextBlock /> <!-- will be styled --> 
</Grid> 

आप अपनी शैली में एक अलग ResourceDictionary में जमा हो जाती है, तो आप कर सकते हैं "आयात" उन्हें संसाधन शब्दकोशों मर्ज करके एक विशेष तत्व के लिए सभी:

<Grid> 
    <Grid.Resources> 
     <ResourceDictionary> 
      <ResourceDictionary.MergedDictionaries> 
        <ResourceDictionary Source="/Resources/MyOtherStyles.xaml" /> 
      </ResourceDictionary.MergedDictionaries> 
     </ResourceDictionary> 
    </Grid.Resources> 

    <TextBlock /> <!-- will be styled --> 
</Grid> 
+0

अच्छी बात .. हालांकि मेरे पास मेरी सभी शैलियों को एक अलग .xaml में परिभाषित किया गया है .. मुझे लगता है कि मैं अभी भी उपर्युक्त परिभाषा को स्थैतिक संसाधन पर इंगित कर सकता हूं। .. –

+0

हां, यह मुझे बहुत कुछ करता है जो मुझे चाहिए .. हालांकि मुझे अभी भी चाहिए कि मुझे हर तत्व के लिए स्थानीय ओवरराइड बनाने की ज़रूरत नहीं है ... <ग्रिड। स्रोत> <स्टाइल आधारितऑन = "{स्टेटिक रिसोर्स फ़ाइलइटम}" टार्गेट टाइप = "{x: टेक्स्टब्लॉक टाइप करें}" /> –

+1

मेरा अपडेट देखें - यह अभी भी सही नहीं है, लेकिन आप एक बार –

6

आपको लगता है कि बस करते हैं, आप कर सकते हैं घोंसला शैलियों की जरूरत है, उदाहरण के लिए

<Style TargetType="{x:Type Border}"> 
    <Style.Resources> 
     <Style TargetType="{x:Type TextBox}"> 
      <!-- ... --> 
     </Style> 
    <Style.Resources> 
</Style> 

यह आपको शैली Borders में TextBoxes अनुमति देता है, तत्वों लेकिन केवल एक ही शैली उन्हें करने के लिए लागू है, इसलिए समानांतर "नियम" के रूप में अच्छी तरह से काम करने के लिए नहीं जा रहा है हो सकता है।

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