खोज…


टिप्पणियों

परिचयात्मक टिप्पणी

WPF में, एक शैली किसी दिए गए दृश्य तत्व के लिए एक या अधिक निर्भरता गुणों के मूल्यों को परिभाषित करता है। उपयोगकर्ता इंटरफ़ेस को और अधिक सुसंगत बनाने (जैसे सभी डायलॉग बटन को एक सुसंगत आकार देने) और बल्क परिवर्तन को आसान बनाने के लिए (उदाहरण के लिए, सभी बटन की चौड़ाई को बदलना) बनाने के लिए आवेदन भर में शैलियों का उपयोग किया जाता है।

शैलियाँ आमतौर पर एप्लिकेशन में एक उच्च स्तर पर एक ResourceDictionary स्तर में परिभाषित की जाती हैं (उदाहरण के लिए App.xaml या किसी थीम में), इसलिए यह ऐप-वाइड उपलब्ध है, लेकिन उन्हें एक तत्व और उसके बच्चों के लिए भी परिभाषित किया जा सकता है, जैसे कि एक आवेदन करना एक StackPanel अंदर सभी TextBlock तत्वों के लिए शैली।

<StackPanel>
    <StackPanel.Resources>
        <Style TargetType="TextBlock">
            <Setter Property="Margin" Value="5,5,5,0"/>
            <Setter Property="Background" Value="#FFF0F0F0"/>
            <Setter Property="Padding" Value="5"/>
        </Style>
    </StackPanel.Resources>
        
    <TextBlock Text="First Child"/>
    <TextBlock Text="Second Child"/>
    <TextBlock Text="Third Child"/>      
</StackPanel>

महत्वपूर्ण लेख

  • वह स्थान जहाँ शैली परिभाषित की गई है, जहाँ वह उपलब्ध है, प्रभावित करता है।
  • आगे के संदर्भों को StaticResource द्वारा हल नहीं किया जा सकता है। दूसरे शब्दों में, यदि आप एक ऐसी शैली को परिभाषित कर रहे हैं जो संसाधन शब्दकोश में किसी अन्य शैली या संसाधन पर निर्भर करती है, तो इसे उस संसाधन के बाद / नीचे परिभाषित किया जाना चाहिए जिस पर वह निर्भर करता है।
  • StaticResource शैलियों और अन्य संसाधनों को संदर्भित करने के लिए अनुशंसित तरीका है (प्रदर्शन और व्यवहारिक कारणों के लिए) जब तक कि आपको विशेष रूप से DynamicResource के उपयोग की आवश्यकता नहीं होती है, उदाहरण के लिए उन विषयों के लिए जिन्हें रनटाइम में बदला जा सकता है।

साधन

MSDN के पास शैलियों और संसाधनों पर पूरी तरह से लेख हैं जो यहां प्रदान करने की तुलना में अधिक गहराई है।

एक नामित शैली को परिभाषित करना

एक नामित शैली के लिए x:Key आवश्यकता होती है x:Key गुण सेट और केवल उन तत्वों पर लागू होता है जो इसे स्पष्ट रूप से नाम से संदर्भित करते हैं:

<StackPanel>
    <StackPanel.Resources>
        <Style x:Key="MyTextBlockStyle" TargetType="TextBlock">
            <Setter Property="Background" Value="Yellow"/>
            <Setter Property="FontWeight" Value="Bold"/>
        </Style>
    </StackPanel.Resources>
        
    <TextBlock Text="Yellow and bold!" Style="{StaticResource MyTextBlockStyle}" />
    <TextBlock Text="Also yellow and bold!" Style="{DynamicResource MyTextBlockStyle}" />
    <TextBlock Text="Plain text." />      
</StackPanel>

एक अंतर्निहित शैली को परिभाषित करना

एक अंतर्निहित शैली किसी दिए गए प्रकार के सभी तत्वों के दायरे में लागू होती है। एक निहित शैली x:Key को छोड़ सकती है x:Key चूंकि यह TargetType रूप से शैली के TargetType गुण के समान है।

<StackPanel>
    <StackPanel.Resources>
        <Style TargetType="TextBlock">
            <Setter Property="Background" Value="Yellow"/>
            <Setter Property="FontWeight" Value="Bold"/>
        </Style>
    </StackPanel.Resources>

    <TextBlock Text="Yellow and bold!"  />
    <TextBlock Text="Also yellow and bold!" />
    <TextBlock Style="{x:Null}" Text="I'm not yellow or bold; I'm the control's default style!" />
</StackPanel>

एक शैली से विरासत में

आधार शैली की आवश्यकता आम है जो एक ही नियंत्रण से संबंधित कई शैलियों के बीच साझा किए गए गुणों / मूल्यों को परिभाषित करती है, खासकर TextBlock जैसी किसी चीज़ के लिए। यह BasedOn संपत्ति का उपयोग करके पूरा किया गया है। मान विरासत में मिले हैं और फिर उन्हें ओवरराइड किया जा सकता है।

<Style x:Key="BaseTextBlockStyle" TargetType="TextBlock">
    <Setter Property="FontSize" Value="12"/>
    <Setter Property="Foreground" Value="#FFBBBBBB" />
    <Setter Property="FontFamily" Value="Arial" />
</Style>

<Style x:Key="WarningTextBlockStyle"
       TargetType="TextBlock"
       BasedOn="{StaticResource BaseTextBlockStyle">
    <Setter Property="Foreground" Value="Red"/>
    <Setter Property="FontWeight" Value="Bold" />
</Style>

ऊपर दिए गए उदाहरण में, किसी भी TextBlock शैली का उपयोग करके WarningTextBlockStyle TextBlock लाल और बोल्ड में 12px एरियल के रूप में प्रस्तुत किया जाएगा।

क्योंकि निहित शैलियों में एक अंतर्निहित x:Key जो उनके TargetType मेल खाती है, आप उन्हें भी विरासत में दे सकते हैं:

<!-- Implicit -->
<Style TargetType="TextBlock">
    <Setter Property="FontSize" Value="12"/>
    <Setter Property="Foreground" Value="#FFBBBBBB" />
    <Setter Property="FontFamily" Value="Arial" />
</Style>

<Style x:Key="WarningTextBlockStyle"
       TargetType="TextBlock"
       BasedOn="{StaticResource {x:Type TextBlock}}">
    <Setter Property="Foreground" Value="Red"/>
    <Setter Property="FontWeight" Value="Bold" />
</Style>


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow