2009-12-01 18 views
30

Bir kullanıcının bir öğenin değerine bağlı olarak ListBox bir veri yolundaki öğeleri nasıl ve nasıl devre dışı bırakabileceğini bilen var mı?Bir özellik değeri temel alınarak bir databound ListBox öğesi nasıl devre dışı bırakılır?

Tercihen Belirli bir özellik false olduğunda, ListBox diğer öğeleri etkilemeden bu öğeyi (imkansız seçmek için yapmak) devre dışı bırakır, bir DataTrigger istiyoruz.

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

cevap

62

Sen ItemContainerStyle kullanabilirsiniz:

<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

büyük! Ayrıca, gerektiği gibi SurfaceListBox denetimleri – GibboK

+0

Works çalışır. Seçim için nasıl devre dışı bırakabileceğimi biliyor musunuz, ancak öğe şablonunun içinde hala etkin hale getirilecek bir düğme var mı? –

İlgili konular