2009-12-01 15 views
30

¿Alguien sabe si y cómo se pueden deshabilitar los artículos en un ListBox con datos basados ​​en el valor de una propiedad?Cómo deshabilitar un elemento de ListBox de datos en función de un valor de propiedad?

Preferiblemente me gustaría un DataTrigger que, cuando una cierta propiedad es false, desactiva este material (hacen que sea imposible para seleccionar) sin afectar a otros elementos de la ListBox.

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

Respuesta

62

Puede utilizar ItemContainerStyle:

<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

funciona muy bien! También funciona en los controles de SurfaceListBox – GibboK

+0

Funciona como debería. ¿Sabes cómo puedo deshabilitar para la selección, pero todavía tengo un botón dentro de la plantilla del elemento para habilitar? –

Cuestiones relacionadas