2008-08-20 4 views
23

के आधार पर WPF में एक बटन सक्षम करना मेरे पास क्लासिक UI स्थिति है - दो सूची बॉक्सों का नाम SelectedItems और AvailableItems - यह विचार यह है कि जिन आइटमों को आप पहले से ही चुन चुके हैं SelectedItems में रहते हैं, जबकि आइटम जो जोड़ने के लिए उपलब्ध हैं SelectedItems (यानी प्रत्येक आइटम जो पहले से मौजूद नहीं है) AvailableItems में रहते हैं।ListBox.SelectedIndex

इसके अलावा, मेरे पास < और > बटन हैं जो वर्तमान चयन को एक सूची से दूसरी सूची में ले जाने के लिए हैं (डबल क्लिक करने के अलावा, जो ठीक काम करता है)।

क्या डब्ल्यूपीएफ में स्टाइल/ट्रिगर स्थापित करने के लिए स्टाइल/ट्रिगर स्थापित करना संभव है या तो सूची बॉक्स में चुने गए किसी भी चीज़ के आधार पर चाल बटन को सक्षम या अक्षम करना संभव है? SelectedItems बाईं तरफ है, इसलिए < बटन उस सूची में चयनित AvailableItems को स्थानांतरित करेगा। हालांकि, अगर कोई आइटम नहीं चुना जाता है (AvailableItems.SelectedIndex == -1), तो मैं चाहता हूं कि यह बटन अक्षम हो (IsEnabled == false) - और अन्य सूची/बटन के लिए दूसरी तरफ।

क्या यह सीधे एक्सएएमएल में करना संभव है, या क्या मुझे इसे संभालने के लिए कोडबेंड में जटिल तर्क बनाने की आवश्यकता है?

+2

यदि मज़ेदार है तो आप पूरी तरह से भयानक, पूरी तरह से भयानक, एकमात्र रास्ता-से-बनाने-इसे-बदतर-साथ-साथ-रेगेक्स के साथ, फिर हाँ यह बहुत मजेदार है –

+1

@ क्या यह एक अच्छा सादृश्य है क्योंकि मैं चाहता हूं रबड़ मैलेट – Cranston

उत्तर

42

यहां आपका समाधान है।

<Button Name="btn1" >click me  
    <Button.Style>   
     <Style>    
      <Style.Triggers>     
       <DataTrigger 
        Binding ="{Binding ElementName=list1, Path=SelectedIndex}" 
        Value="-1">      
        <Setter Property="Button.IsEnabled" Value="false"/>      
       </DataTrigger>     
      </Style.Triggers>    
     </Style>   
    </Button.Style>  
</Button> 
66

कम कोड समाधान:

<Button Name="button1" IsEnabled="{Binding ElementName=listBox1, Path=SelectedItems.Count}" /> 

तो गिनती 0 यह सच करने के लिए, गलत पर मैप करने के लिए> 0 लगता है।

+0

के साथ नट्स को तोड़ने के लिए प्यार दूसरे जवाब के बारे में अच्छी बात यह है कि आप इसे 2 सूचियों के लिए उपयोग कर सकते हैं, दोनों को बटन को सक्षम करने के लिए कुछ चुना जाना है। – Berty

+0

यह तभी होता है जब सूचीदृश्य में कम से कम एक आइटम हो, आइटम आइटम चयनित होने पर प्रश्न सक्षम बटन होता है। – luka