2009-12-01 1 views
30

Weiß jemand, ob und wie man Elemente in einer datengebundenen ListBox basierend auf dem Wert einer Eigenschaft deaktivieren kann?Wie kann ein datengebundenes ListBox-Objekt basierend auf einem Eigenschaftswert deaktiviert werden?

Vorzugsweise würde ich ein DataTrigger mag das, wenn eine bestimmte Eigenschaft false ist, diesen Artikel deaktiviert (es unmöglich machen, zu wählen), ohne andere Elemente in den ListBox zu beeinflussen.

<ListBox> 
    <ListBox.ItemTemplate> 
    <DataTemplate> 
     <TextBlock Name="textBlock" Text="{Binding Description}"/> 
     <DataTemplate.Triggers> 
     <DataTrigger Binding="{Binding IsEnabled}" Value="False"> 
      ?? 
     </DataTrigger> 
     </DataTemplate.Triggers> 
    </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 

Antwort

62

Sie können ItemContainerStyle verwenden:

<ListBox> 
    <ListBox.ItemContainerStyle> 
    <Style TargetType="{x:Type ListBoxItem}"> 
     <Style.Triggers> 
     <DataTrigger Binding="{Binding YourPropertyName}" Value="False"> 
      <Setter Property="IsEnabled" Value="False"/> 
     </DataTrigger> 
     </Style.Triggers> 
    </Style> 
    </ListBox.ItemContainerStyle> 
</ListBox> 
+0

funktioniert super! Es funktioniert auch auf SurfaceListBox controlls – GibboK

+0

Funktioniert wie es sollte. Weißt du, wie ich für die Auswahl deaktivieren kann, aber noch eine Schaltfläche innerhalb der Elementvorlage aktiviert haben? –

Verwandte Themen