2011-07-23 5 views
6

bağlanma WPF ben doğru olduğuna IsEnabled mülkiyet düğmesine bağlamak istiyorumEh ben benim senaryo 2 elemanlarını yaşıyor kolay tahmin eleman

<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> 

sadece gelen Öğe eğer Liste kutusu seçildiğinde denedim

XAMLiçinde (odaklanmış)

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

ama yok.

cevap

5

Seçim, Dokunma Yapmaları ile ne ilgisi var?

bu çalışacaktı (Ayrıca ElementName kapalı):

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

Düzenleme: Temel olarak bağlayıcı sistem çalışır: Görünüşe göre, tetik-varyantı aksine, insanlar bu nasıl çalıştığını görmek için görünmüyor girişi bir el değerine dönüştürmek için, bir boolean, bir tam sayı aldığında, 0, false'a, true'a daha yüksek bir değere dönüştürücü olacaktır. Bu yüzden, bir veya daha fazla öğe seçildiğinde Düğme etkinleştirilir.

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

Bu mantık tersine çevrilir, yalnızca hiçbir şey seçilmezse etkinleştirilir. (Ayrıca biraz döner kavşak) –

+0

@ H.B. Teşekkürler sabit – sternr