2011-01-12 18 views
15

यह प्रश्न शायद एक डुप्लिकेट है, लेकिन मुझे इसे SO पर नहीं मिला।एकाधिक नियंत्रणों में एक WPF शैली को लागू करना

अगर मैं एक कंटेनर Window, StackPanel, Grid, आदि वहाँ किसी भी तरह से मैं एक खास प्रकार के सभी नियंत्रण करने के लिए एक Style लागू कर सकते हैं है, कि इसके भीतर शामिल कर रहे हैं?

मैं गुण परिवर्तन, Container.Resources का उपयोग कर और एक TargetType को अलग-अलग परिवर्तन की स्थापना करके लागू कर सकते हैं, लेकिन जब मैं लक्ष्य की Style स्थापित करने की कोशिश की, मैं कोई त्रुटि मिलती है, मुझे बता रहा Style निर्धारित नहीं कर सकते।

क्या एक्सएएमएल में ऐसा करने का कोई तरीका है?

उत्तर

28

जो आप सेट करने का प्रयास कर रहे हैं उसके आधार पर क्रमबद्ध करें। यदि गुण एक सामान्य आधार वर्ग के गुण हैं तो हाँ, आप कर सकते हैं। सिल्वरलाइट की तुलना में आपके पास WPF में अधिक विकल्प हैं क्योंकि आप शैलियों का उत्तराधिकारी बना सकते हैं। उदाहरण के लिए ...

<Window.Resources> 
    <Style x:Key="CommonStyle" TargetType="FrameworkElement"> 
     <Setter Property="Margin" Value="2" /> 
    </Style> 
    <Style TargetType="StackPanel" BasedOn="{StaticResource CommonStyle}"> 
    </Style> 
    <Style TargetType="Grid" BasedOn="{StaticResource CommonStyle}"> 
    </Style> 
    <Style TargetType="Button" BasedOn="{StaticResource CommonStyle}"> 
     <Setter Property="Background" Value="LimeGreen" /> 
    </Style> 
</Window.Resources> 

आम शैली, CommonStyle 3 अंतर्निहित शैलियों द्वारा विरासत में मिला दिया जाएगा। लेकिन आप केवल उन गुणों को निर्दिष्ट कर सकते हैं जो सभी फ्रेमवर्क एलिमेंट कक्षाओं के लिए आम हैं। आप पृष्ठभूमि को सामान्य स्टाइल में सेट नहीं कर सके क्योंकि फ्रेमवर्क एलिमेंट पृष्ठभूमि संपत्ति प्रदान नहीं करता है। हालांकि ग्रिड और स्टैकपैनल में पृष्ठभूमि (पैनल से विरासत में मिली) है, लेकिन यह वही पृष्ठभूमि संपत्ति नहीं है जो बटन (नियंत्रण से विरासत में है)

आशा है कि इससे आपको अपने रास्ते पर पहुंचने में मदद मिलेगी।

+0

बढ़िया, मुझे यही चाहिए, धन्यवाद। – ocodo

+8

यदि किसी शैली में x नहीं है: कुंजी फ़ील्ड - यह उस प्रकार की * सभी * ऑब्जेक्ट्स पर लागू होगी। तो * सभी * स्टैकपैनल्स, ग्रिड और बटन में वह मार्जिन होगा। – DefenestrationDay

+0

धन्यवाद @DefenestrationDay !!! –

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