2008-08-20 53 views
23

我有一個相當經典的用戶界面環境 - 兩個名爲SelectedItemsAvailableItems的列表框 - 這個想法是您已經選擇的項目存在於SelectedItems中,而可用於添加的項目到SelectedItems(即每個項目不在那裏)住在AvailableItems在WPF中啓用一個按鈕,具體取決於ListBox.SelectedIndex

此外,我有<>按鈕將當前選擇從一個列表移動到另一個列表(除了雙擊,它工作正常)。

是否有可能在WPF中設置一個樣式/觸發器來啓用或禁用移動按鈕,取決於任何在ListBox中選擇的任何東西? SelectedItems位於左側,因此<按鈕會將選定的AvailableItems移動到該列表。但是,如果未選擇任何項目(AvailableItems.SelectedIndex == -1),我希望此按鈕被禁用(IsEnabled == false) - 另一種方式是另一個列表/按鈕。

這是可能的直接在XAML中做,還是我需要在代碼隱藏中創建複雜的邏輯來處理它?

+2

如果你喜歡你的意思是完全可怕,唯一的方法是使用正則表達式,那麼是它的樂趣 – 2010-06-03 17:01:03

+1

@Will這是一個很好的比喻,因爲我會愛用橡皮槌粉碎堅果 – Cranston 2013-05-30 21:56:37

回答

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映射到錯誤,爲true。

相關問題