मैं WPF में डेटा ट्रिगर के लिए एकाधिक स्थितियां कैसे प्रदान कर सकता हूं?मैं डब्ल्यूपीएफ में डेटा ट्रिगर के लिए कई शर्तों को कैसे प्रदान कर सकता हूं?
उत्तर
उपयोग MultiDataTrigger प्रकार
<Style TargetType="ListBoxItem">
<Style.Triggers>
<DataTrigger Binding="{Binding Path=State}" Value="WA">
<Setter Property="Foreground" Value="Red" />
</DataTrigger>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding Path=Name}" Value="Portland" />
<Condition Binding="{Binding Path=State}" Value="OR" />
</MultiDataTrigger.Conditions>
<Setter Property="Background" Value="Cyan" />
</MultiDataTrigger>
</Style.Triggers>
</Style>
@jasonk - यदि आपके पास करने के लिए "या" तब से सभी शर्तों (ए और बी) < => ~ (~ एक या ~ बी)
नकारना चाहते हैं लेकिन आप अन्य मूल्यों अगर बूलियन से प्रकार कन्वर्टर्स का उपयोग करके देखें:
<MultiDataTrigger.Conditions>
<Condition Value="True">
<Condition.Binding>
<MultiBinding Converter="{StaticResource conditionConverter}">
<Binding Path="Name" />
<Binding Path="State" />
</MultiBinding>
</Condition.Binding>
<Setter Property="Background" Value="Cyan" />
</Condition>
</MultiDataTrigger.Conditions>
क्या आप एक शर्त है जो आप सूट का निर्माण करने के इच्छानुसार Convert विधि में मूल्यों का उपयोग कर सकते हैं।
आह, सब कुछ अस्वीकार करने और इसे एक या स्थिति में फ़्लिप करने के लिए स्मार्ट चाल :) –
क्या आप इस उत्तर पर थोड़ा सा विस्तार कर सकते हैं? मुझे यकीन नहीं है कि इसका उपयोग कैसे करें। 'कंडीशन कनवर्टर' क्या करता है?हम इस उदाहरण में "पोर्टलैंड" और "OR" को हमारे दो या 'विकल्पों के रूप में कैसे निर्दिष्ट कर रहे हैं? – DLeh
@DLeh - [यहां एक अच्छा ट्यूटोरियल है] (http://tech.pro/tutorial/809/wpf-tutorial-using-multibindings) 'मल्टीबाइंडिंग' का उपयोग करने पर। – cod3monk3y
@serine's answer पर विस्तृत करने के लिए और गैर-तुच्छ बहु-मूल्यवान स्थिति के साथ काम करने का वर्णन करें: मुझे बूलियन स्थिति NOT a AND (b OR NOT c)
के लिए किसी आइटम पर "मंद-आउट" ओवरले दिखाने की आवश्यकता थी।
पृष्ठभूमि के लिए, यह एक "एकाधिक विकल्प" प्रश्न है। यदि उपयोगकर्ता गलत जवाब चुनता है तो यह अक्षम (मंद हो गया है और फिर से नहीं चुना जा सकता है)। एक स्वचालित एजेंट को स्पष्टीकरण (सीमा हाइलाइट) देने के लिए किसी विशेष विकल्प पर फोकस पर रखने की क्षमता है। जब एजेंट किसी आइटम पर केंद्रित होता है, तो उसे को मंद नहीं किया जाना चाहिए, भले ही यह अक्षम हो। फोकस में नहीं हैं सभी आइटम डी-केंद्रित चिह्नित हैं, और मंद हो जाना चाहिए।
मद्धिम के लिए तर्क इस प्रकार है:
NOT IsFocused AND (IsDefocused OR NOT Enabled)
इस तर्क को लागू करने के लिए, मैं एक सामान्य IMultiValueConverter
मेरे तर्क
// 'P' represents a parenthesis
// ! a && (b || ! c)
class NOT_a_AND_P_b_OR_NOT_c_P : IMultiValueConverter
{
// redacted [...] for brevity
public object Convert(object[] values, ...)
{
bool a = System.Convert.ToBoolean(values[0]);
bool b = System.Convert.ToBoolean(values[1]);
bool c = System.Convert.ToBoolean(values[2]);
return !a && (b || !c);
}
...
}
मैच के लिए XAML में (awkwardly) नामक बनाया मैं MultiDataTrigger
में <Style><Style.Triggers>
संसाधन
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<!-- when the equation is TRUE ... -->
<Condition Value="True">
<Condition.Binding>
<MultiBinding Converter="{StaticResource NOT_a_AND_P_b_OR_NOT_c_P}">
<!-- NOT IsFocus AND (IsDefocused OR NOT Enabled) -->
<Binding Path="IsFocus"/>
<Binding Path="IsDefocused" />
<Binding Path="Enabled" />
</MultiBinding>
</Condition.Binding>
</Condition>
</MultiDataTrigger.Conditions>
<MultiDataTrigger.Setters>
<!-- ... show the 'dim-out' overlay -->
<Setter Property="Visibility" Value="Visible" />
</MultiDataTrigger.Setters>
</MultiDataTrigger>
और पूर्णता के लिए, मेरी कनवर्टर एक ResourceDictionary
<ResourceDictionary xmlns:conv="clr-namespace:My.Converters" ...>
<conv:NOT_a_AND_P_b_OR_NOT_c_P x:Key="NOT_a_AND_P_b_OR_NOT_c_P" />
</ResourceDictionary>
मुझे नहीं लगता कि यह कनवर्टर्स का इरादा इस तरह इस्तेमाल किया जाना है। वे वास्तव में प्रदर्शन के लिए मूल्यों को बदलने के लिए हैं। जब यह जटिल हो जाता है, तो केवल दृश्य मॉडल पर एक गणना की गई संपत्ति बनाएं जो आपको आवश्यकतानुसार देता है। –
हालांकि नामकरण –
प्रोग्रामिंग एक शिल्प था और कोड सुरुचिपूर्ण था याद रखने के लिए चुप्पी का एक पल लें। –
- 1. डब्ल्यूपीएफ डेटा ट्रिगर ट्रिगर लक्ष्य
- 2. मैं UICollectionViewController में GetSizeForItem कार्यान्वयन कैसे प्रदान कर सकता हूं?
- 3. मैं इस डेटा ट्रिगर को काम करने के लिए कैसे प्राप्त कर सकता हूं?
- 4. मैं jqGrid लोडिंग को कैसे ट्रिगर कर सकता हूं .. संदेश?
- 5. डब्ल्यूपीएफ सेटिंग छवि। डेटा ट्रिगर
- 6. मैं ब्राउज़र से स्कैनर कैसे ट्रिगर कर सकता हूं?
- 7. मैं डब्ल्यूपीएफ में डीपीआई कैसे प्राप्त कर सकता हूं?
- 8. क्या मैं DataGridView.EndEdit सेलविलिडेटिंग ईवेंट को ट्रिगर कर सकता हूं?
- 9. मैं SQL सर्वर पर किसी ट्रिगर में INSERT के मानों को कैसे संपादित कर सकता हूं?
- 10. मैं अपने व्यस्त संकेतक को प्रदर्शित करने के लिए कैसे मजबूर कर सकता हूं? (डब्ल्यूपीएफ)
- 11. मैं मेटियर में डेटा कैश कैसे कर सकता हूं?
- 12. मैं पर्ल से जल्दी से कई बड़ी सीएसवी फाइलों में डेटा कैसे एक्सेस कर सकता हूं?
- 13. मैं आर में डेटा कैसे एन्क्रिप्ट कर सकता हूं?
- 14. मैं एक डब्ल्यूपीएफ डाटाग्रिड कैसे पगेट कर सकता हूं?
- 15. मैं आरआरडीटोल के साथ डेटा कैसे अपडेट कर सकता हूं?
- 16. मैं पिरामिड में आईएनआई डेटा कैसे प्राप्त कर सकता हूं?
- 17. मैं सी # के साथ कोड में डेटा बाध्यकारी कैसे कर सकता हूं?
- 18. मैं WPF में डेटा टेम्पलेट में रूट डेटा कॉन्टेक्स्ट को कैसे एक्सेस कर सकता हूं?
- 19. मैं कई परियोजनाओं में कोको टच में सेवा लोकेटर पैटर्न को कैसे कार्यान्वित कर सकता हूं?
- 20. डब्ल्यूपीएफ: कुछ नियंत्रण के ट्रिगर
- 21. मैं कई SQLite डेटाबेस कैसे विलय कर सकता हूं?
- 22. मैं डब्ल्यूपीएफ में लेआउट को कैसे निलंबित और फिर से शुरू कर सकता हूं?
- 23. वेबसाकेट के माध्यम से डेटा भेजने के लिए मैं सी ++ का उपयोग कैसे कर सकता हूं?
- 24. मैं कोडनिर्देशक में एक ही ऑब्जेक्ट के कई उदाहरणों को कैसे चालू कर सकता हूं?
- 25. पॉको सी ++ लाइब्रेरी का उपयोग करके, मैं डेटा को थ्रेड में कैसे पास कर सकता हूं?
- 26. पर्ल में, मैं कई सेटों के कार्टेशियन उत्पाद को कैसे प्राप्त कर सकता हूं?
- 27. मैं कई से कई मैपिंग टेबल में डेटा के लॉजिकल सबसेट को कुशलता से कैसे बना सकता हूं?
- 28. मैं node.js में मेमोरी डेटा के अर्थ को कैसे डीकोड कर सकता हूं और मेमोरी लीक डीबग कर सकता हूं?
- 29. मैं अजगर में भूगर्भित डेटा को कैसे विभाजित कर सकता हूं?
- 30. मैं मानक आईओएस सिस्टम शर्तों (उदा। पसंदीदा, अधिक ...) के लिए स्थानीय अक्षरों को कैसे एक्सेस कर सकता हूं?
में परिभाषित किया गया है वहाँ एक "या" MultiTrigger में बयान करने के लिए एक रास्ता है। जैसे नाम = "पोर्टलैंड" या राज्य = "या" – jasonk
@ जेसनक - सुनिश्चित नहीं है कि आप इसे मल्टीट्रिगर के साथ कर सकते हैं। आप इसके लिए दो ट्रिगर परिभाषित कर सकते हैं .. – Gishu
यदि यह एक साधारण या शर्त कथन है, तो आप तर्क को उलट सकते हैं ताकि यह एक AND में बदल जाए। | condition1 | condition2 | परिणाम | | सच | सच | सच | | सच | झूठी | सच | | झूठी | सच | सच | | झूठी | झूठी | झूठा | या तो/OR की जांच करने के बजाय सत्य हैं, जांचें कि दोनों/और गलत हैं, और डिफ़ॉल्ट को सही पर सेट करें। –