खोज…
परिचय
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
संपत्ति डिफ़ॉल्ट मान पर वापस आ जाएगी।