खोज…


परिचय

WPF में उपलब्ध ट्रिगर के विभिन्न प्रकार, सहित पर चर्चा Trigger , DataTrigger , MultiTrigger , MultiDataTrigger , और EventTrigger

ट्रिगर में परिभाषित कुछ शर्तों के आधार पर ट्रिगर करने वाले किसी भी वर्ग को अपनी संपत्तियों को सेट या बदलने के लिए FrameworkElement या FrameworkContentElement से प्राप्त होता है। मूल रूप से, यदि किसी तत्व को स्टाइल किया जा सकता है, तो इसे ट्रिगर भी किया जा सकता है।

टिप्पणियों

  • EventTrigger को छोड़कर सभी ट्रिगर को <Style> तत्व के भीतर परिभाषित किया जाना चाहिए। एक EventTrigger को एक <Style> तत्व, या एक नियंत्रण Triggers गुण में परिभाषित किया जा सकता है।
  • <Trigger> तत्वों में किसी भी संख्या में <Setter> तत्व हो सकते हैं। ये तत्व <Trigger> तत्व की स्थिति पूरी होने पर युक्त तत्व पर गुण स्थापित करने के लिए जिम्मेदार हैं।
  • यदि किसी गुण को मूल तत्व मार्कअप में परिभाषित किया गया है, तो ट्रिगर सेट की स्थिति पूरी होने पर भी <Setter> तत्व में परिभाषित गुण परिवर्तन प्रभावी नहीं होगा। मार्कअप पर विचार करें <TextBlock Text="Sample"> । कार्यवाही कोड की Text संपत्ति एक ट्रिगर के आधार पर कभी नहीं बदलेगी क्योंकि जड़ संपत्ति परिभाषाएं शैलियों में परिभाषित गुणों पर पूर्वाग्रह लेती हैं।
  • बाइंडिंग की तरह, एक बार ट्रिगर का उपयोग करने के बाद, इसे संशोधित नहीं किया जा सकता है।

उत्प्रेरक

पांच ट्रिगर प्रकारों में से सबसे सरल, Trigger एक ही नियंत्रण के भीतर अन्य गुणों के आधार पर गुण सेट करने के लिए जिम्मेदार है।

<TextBlock>
    <TextBlock.Style>
        <Style TargetType="{x:Type TextBlock}">
            <Style.Triggers>
                <Trigger Property="Text" Value="Pass">
                    <Setter Property="Foreground" Value="Green"/>
                </Trigger>
            </Style.Triggers>
        </Style>
    </TextBlock.Style>
</TextBlock>

इस उदाहरण में, TextBlock का अग्र भाग का रंग हरा हो जाएगा जब यह Text गुण स्ट्रिंग "Pass" बराबर हो।

MultiTrigger

एक MultiTrigger एक मानक Trigger समान है जिसमें यह केवल उसी नियंत्रण के गुणों पर लागू होता है। अंतर यह है कि MultiTrigger में कई स्थितियां हैं जो ट्रिगर होने से पहले संतुष्ट होना चाहिए। शर्तों को <Condition> टैग का उपयोग करके परिभाषित किया गया है।

<TextBlock x:Name="_txtBlock" IsEnabled="False">
    <TextBlock.Style>
        <Style TargetType="{x:Type TextBlock}">
            <Style.Triggers>
                <MultiTrigger>
                    <MultiTrigger.Conditions>
                        <Condition Property="Text" Value="Pass"/>
                        <Condition Property="IsEnabled" Value="True"/>
                    </MultiTrigger.Conditions>
                    <Setter Property="Foreground" Value="Green"/>
                </MultiTrigger>
            </Style.Triggers>
        </Style>
    </TextBlock.Style>
</TextBlock>

नोटिस जब तक दोनों शर्तें पूरी नहीं होती तब तक MultiTrigger सक्रिय नहीं होगा।

DataTrigger

एक DataTrigger किसी भी संपत्ति से जुड़ा जा सकता है, यह अपने आप पर नियंत्रण, एक और नियंत्रण, या यहां तक कि एक गैर यूआई वर्ग में एक संपत्ति है। निम्नलिखित सरल वर्ग पर विचार करें।

public class Cheese
{
    public string Name { get; set; }
    public double Age { get; set; }
    public int StinkLevel { get; set; }
}

जिसे हम निम्नलिखित TextBlock में DataContext रूप में संलग्न करेंगे।

<TextBlock Text="{Binding Name}">
    <TextBlock.DataContext>
        <local:Cheese Age="12" StinkLevel="100" Name="Limburger"/>
    </TextBlock.DataContext>
    <TextBlock.Style>
        <Style TargetType="{x:Type TextBlock}">
            <Style.Triggers>
                <DataTrigger Binding="{Binding StinkLevel}" Value="100">
                    <Setter Property="Foreground" Value="Green"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </TextBlock.Style>
</TextBlock>

पूर्ववर्ती कोड में, TextBlock.Foreground संपत्ति ग्रीन होगी। यदि हम अपने XAML में StinkLevel संपत्ति को 100 के अलावा किसी और चीज़ में Text.Foreground हैं, तो Text.Foreground संपत्ति डिफ़ॉल्ट मान पर वापस आ जाएगी।



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