क्या मैं एक शैली निर्दिष्ट कर सकता हूं जो सभी तत्वों पर लागू होती है? मैंने कोशिश की
<Style TargetType="Control">
<Setter Property="Margin" Value="0,5" />
</Style>
लेकिन इसने कुछ नहीं किया
क्या मैं एक शैली निर्दिष्ट कर सकता हूं जो सभी तत्वों पर लागू होती है? मैंने कोशिश की
<Style TargetType="Control">
<Setter Property="Margin" Value="0,5" />
</Style>
लेकिन इसने कुछ नहीं किया
जवाबों:
Style
आपके द्वारा बनाए केवल लक्षित कर रहा है Control
और न तत्वों कि से निकाले जाते हैं Control
। जब आप x:Key
इसे सेट नहीं करते हैं तो यह TargetType
आपके मामले में निहित है x:Key="{x:Type Control}"
।
किसी भी Style
लक्ष्य को निर्दिष्ट करने का कोई सीधा तरीका नहीं है जो सभी तत्वों को प्राप्त करता है जो से प्राप्त होता TargetType
है Style
। आपके पास कुछ अन्य विकल्प हैं।
यदि आपके पास निम्नलिखित है Style
<Style x:Key="ControlBaseStyle" TargetType="{x:Type Control}">
<Setter Property="Margin" Value="50" />
</Style>
आप Buttons
उदाहरण के लिए सभी को लक्षित कर सकते हैं
<Style TargetType="{x:Type Button}" BasedOn="{StaticResource ControlBaseStyle}"/>
या किसी भी तत्व पर सीधे शैली का उपयोग करें, जैसे Button
<Button Style="{StaticResource ControlBaseStyle}" ...>
जैसा कि फ्रेड्रिक हेडब्लैड ने उत्तर दिया कि आप नियंत्रण से विरासत में मिले सभी तत्वों को प्रभावित कर सकते हैं।
लेकिन आप उदाहरण के लिए एक ही शैली के साथ टेक्स्टब्लॉक और बटन के लिए शैली लागू नहीं कर सकते।
ऐसा करने के लिए:
<Style x:Key="DefaultStyle" TargetType="{x:Type FrameworkElement}">
<Setter Property="Control.Margin" Value="50"/>
</Style>
<Style TargetType="TextBlock" BasedOn="{StaticResource DefaultStyle}"/>
<Style TargetType="Button" BasedOn="{StaticResource DefaultStyle}"/>
FrameworkElement
सभी नियंत्रणों पर लागू क्यों नहीं हो रही है - इसने उस प्रश्न का उत्तर दिया!