Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to disable a databound ListBox item based on a property value?

Does anyone know if and how one can disable items in a databound ListBox based on the value of a property?

Preferably I would like a DataTrigger which, when a certain property is false, disables this item (make it impossible to select) without affecting other items in the 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> 
like image 269
J W Avatar asked Dec 01 '09 07:12

J W


1 Answers

You can use 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> 
like image 200
japf Avatar answered Oct 04 '22 07:10

japf