2011-07-23 78 views
6

嗯,我想它很容易我的情況是有兩個元素: 列表框按鈕WPF結合元素

<ListBox Name="BannedItemsListBox" 
     Margin="5" 
     MinWidth="100" 
     MaxWidth="100" " Height=" 
     204" ItemsSource="{Binding Path=BannedItems, Mode=TwoWay}"></ListBox> 
<Button Name="RemoveBannedItemsButton" 
     Margin="5" 
     MinWidth="65" 
     Height="22" 
     Click="RemoveBannedItemButton_Click">Remove</Button> 

我要綁定的IsEnabled屬性按鈕是真實的,只有當項目從在列表框被選擇(聚焦)XAML

我試圖

IsEnabled="{Binding ElementName=BannedSourcesListBox, Path=TouchesDirectlyOver.Count}" 

但沒有去。

回答

5

選擇與觸摸有什麼關係? (也是ElementName是關閉的)

我想試試這個:

IsEnabled="{Binding SelectedItems.Count, ElementName=BannedItemsListBox}" 

編輯:顯然,不同的是觸發變,人們似乎並沒有看到這是如何工作的:基本上,結合系統的嘗試將輸入轉換爲手頭的屬性,一個布爾值,所以當它獲得一個整數時,0將轉換爲false,任何高於true的值。所以如果選擇一個或多個項目,按鈕將被啓用。

3
<Button Content="Button" 
     Height="23" 
     HorizontalAlignment="Left" 
     Margin="138,12,0,0" 
     Name="button1" 
     VerticalAlignment="Top" 
     Width="75" 
     Click="button1_Click"> 
    <Button.Style> 
     <Style> 
      <Setter Property="Button.IsEnabled" 
        Value="True" /> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding ElementName=lstTest , Path=SelectedItem}" 
          Value="{x:Null}"> 
        <Setter Property="Button.IsEnabled" 
          Value="False" /> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </Button.Style> 
</Button> 
+0

該邏輯反轉,只有在沒有選擇任何內容時纔會啓用。 (這也有點迂迴) –

+0

@ H.B。謝謝修復它 – sternr