क्या मैं एक शैली निर्दिष्ट कर सकता हूं जो सभी तत्वों पर लागू होती है? मैंने कोशिश की
<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सभी नियंत्रणों पर लागू क्यों नहीं हो रही है - इसने उस प्रश्न का उत्तर दिया!