.net - Wpf RadioButton group binding -


मेरे पास 3 RadioButton समान समूह में है I रेडियोबुटन्स चलाने के लिए 3 अलग-अलग ऑपरेशन का प्रतिनिधित्व करते हैं इसके अलावा मेरे पास बटन "रन" है।

सभी रेडियोबुटन्स में IsChecked = "false" डिफ़ॉल्ट रूप से है मुझे रेडियोबुटन्स की जांच करने तक किसी भी समय तक बटन "रन" IsEnabled = "False" होनी चाहिए। इससे उपयोगकर्ता को ब्रेनलेस क्लिक से "रन" क्लिक करने से पहले वह वास्तव में यह चुन लेता है कि वह क्या करना चाहते हैं।

मुझे पता है कि इसे कोड के पीछे या व्यूमोल्ड में कैसे बनाया जाए, लेकिन मुझे आश्चर्य है कि यह तर्क बनाने का कोई तरीका है एक्सएएमएल में? किसी भी प्रकार की ट्रिगर करने के लिए बटन को केवल तभी सक्षम किया जा सकता है, अगर रेडियोबूटों में से कोई भी चेक हो?

मुझे लगता है कि सबसे अच्छा तरीका है अभी भी कमांड चलाने के लिए CanCommandExecute का उपयोग करके एक VM विधि के लिए जाने के लिए रन बटन को बाध्य किया गया है आप कुछ शुद्ध एक्सएएमएल भी इस्तेमाल कर सकते हैं उदाहरण के लिए:

  & lt; ग्रिड xmlns: i = "http://schemas.microsoft.com/expression/2010/interactivity" xmlns: ei = "http://schemas.microsoft com / अभिव्यक्ति / 2010 / बातचीत "& gt; & Lt; i: Interaction.Triggers & gt; & lt; i: EventTrigger स्रोत नाम = "rbChoice1" EventName = "चेक किया गया" & gt; & Lt; i: Interaction.Behaviors & gt; & LT; Ei: ConditionBehavior & gt; & Lt; ei: सशर्त अभिव्यक्ति अग्रेषित = "या" & gt; & Lt; ei: तुलना कंडिशन वाम ओपरंड = "{बाइंडिंग ईशंकेक्ड, एलिमेंटनम = आरबीसीवाइस 1}" राइटऑपरैंड = "ट्रू" / & gt; & Lt; ei: तुलनाकण्डन LeftOperand = "{बाध्यकारी IsChecked, ElementName = rbChoice2}" राइटऑपरैंड = "ट्रू" / & gt; & lt; ei: तुलना कंडिशन लेफ्टऑपरैंड = "{बाइंडिंग इस्चैक्ड, एलिमेंटनम = आरबीच्यूस 3}" राइटऑपरैंड = "ट्रू" / & gt; & Lt; / Ei: ConditionalExpression & gt; & Lt; / Ei: ConditionBehavior & gt; & Lt; / मैं: Interaction.Behaviors & gt; & lt; ei: ChangePropertyAction TargetName = "btnRun" प्रॉपर्टीनाम = "IsEnabled" मान = "ट्रू" / & gt; & Lt; / मैं: EventTrigger & gt; & lt; i: EventTrigger स्रोत नाम = "rbChoice2" EventName = "चेक किया हुआ" & gt; & Lt; i: Interaction.Behaviors & gt; & LT; Ei: ConditionBehavior & gt; & lt; ei: सशर्त अभिव्यक्ति अग्रेषित = "या" & gt; & lt; ei: तुलना कंडिशन लेफ्टऑपरैंड = "{बाइंडिंग ईशंकेक्ड, एलिमेंटनम = आरबीसीवाइस 1}" राइटऑपरैंड = "ट्रू" / & gt; & lt; ei: तुलना कंडिशन लेफ्टऑपरैंड = "{बाइंडिंग ईशंक, एलीमेंटनम = आरबीसीवाइस 2}" राइटऑपरैंड = "ट्रू" / & gt; & lt; ei: तुलना कंडिशन लेफ्टऑपरैंड = "{बाइंडिंग इस्चैक्ड, एलिमेंटनम = आरबीच्यूस 3}" राइटऑपरैंड = "ट्रू" / & gt; & Lt; / Ei: ConditionalExpression & gt; & Lt; / Ei: ConditionBehavior & gt; & Lt; / मैं: Interaction.Behaviors & gt; & lt; ei: ChangePropertyAction TargetName = "btnRun" प्रॉपर्टीनाम = "IsEnabled" मान = "ट्रू" / & gt; & Lt; / मैं: EventTrigger & gt; & Lt; i: EventTrigger स्रोत नाम = "rbChoice3" EventName = "चेक किया हुआ" & gt; & Lt; i: Interaction.Behaviors & gt; & LT; Ei: ConditionBehavior & gt; & Lt; ei: सशर्त अभिव्यक्ति अग्रेषित = "या" & gt; & Lt; ei: तुलना कंडिशन वाम ओपरंड = "{बाइंडिंग ईशंकेक्ड, एलिमेंटनम = आरबीसीवाइस 1}" राइटऑपरैंड = "ट्रू" / & gt; & Lt; ei: तुलनाकण्डन LeftOperand = "{बाध्यकारी IsChecked, ElementName = rbChoice2}" राइटऑपरैंड = "ट्रू" / & gt; & Lt; ei: तुलना कंडिशन लेफ्ट ओपरंड = "{बाइंडिंग इस्चैक्ड, एलिमेंटनम = आरबीच्यूस 3}" राइटऑपरैंड = "ट्रू" / & gt; & Lt; / Ei: ConditionalExpression & gt; & Lt; / Ei: ConditionBehavior & gt; & Lt; / मैं: Interaction.Behaviors & gt; & lt; ei: ChangePropertyAction TargetName = "btnRun" प्रॉपर्टीनाम = "IsEnabled" मान = "ट्रू" / & gt; & Lt; / मैं: EventTrigger & gt; & Lt; / मैं: Interaction.Triggers & gt; & lt; ग्रिड क्षैतिज संरेखण = "केंद्र" वर्टिकलएलिनेमेंट = "केंद्र" चौड़ाई = "300" & gt; & LT; Grid.RowDefinitions & gt; & LT; RowDefinition / & gt; & lt; RowDefinition ऊँचाई = "10" / & gt; & LT; RowDefinition / & gt; & lt; RowDefinition ऊँचाई = "10" / & gt; & LT; RowDefinition / & gt; & lt; RowDefinition ऊँचाई = "10" / & gt; & LT; RowDefinition / & gt; & LT; /Grid.RowDefinitions> & Lt; रेडियोबटन x: नाम = "आरबी चाइस 1" ग्रिड। रॉ = "0" सामग्री = "विकल्प 1" / & gt; & Lt; रेडियोबटन x: नाम = "आरबी-चाइस 2" ग्रिड। रो = "2" सामग्री = "विकल्प 2" / & gt; & Lt; रेडियोबटन x: नाम = "आरबीएच विकल्प 3" ग्रिड। रॉ = "4" सामग्री = "विकल्प 3" / & gt; & lt; बटन x: नाम = "बीटीएनआरुन" ग्रिड। राउ = "6" सामग्री = "रन" आईसेंटेड = "फॉल्स" / & gt; & Lt; / ग्रिड & gt; & Lt; / ग्रिड & gt;   

दुर्भाग्य से मैं: इवेंटट्रिगर रूटेटेड इवेंट नहीं लेते हैं अन्यथा यह सिर्फ एक इवेंटट्रिगर के साथ लिखा जा सकता है। लेकिन मुझे लगता है कि इसे रूट किए गए घटनाओं को स्वीकार करने के लिए विस्तारित करने के लिए काफी आसान होना चाहिए।

और दूसरा समाधान एक मल्टीबैंगिक कनवर्टर लिखना है जो बोल्स की एक सरणी लेता है और उनके प्रदर्शन करता है या ऑपरेटर और परिणाम देता है। इस तरह से आप केवल अपने रेडियो के सभी IsChecked गुणों में IsEnabled संपत्ति को बाध्य कर सकते हैं।

Comments

Popular posts from this blog

Verilog Error: output or inout port "Q" must be connected to a structural net expression -

jasper reports - How to center align barcode using jasperreports and barcode4j -

c# - ASP.NET MVC - Attaching an entity of type 'MODELNAME' failed because another entity of the same type already has the same primary key value -