2013-06-04 4 views
0

Comment puis-je obtenir les résultats suivants:Binding conditionnelle Sans utiliser Converter

<ComboBox 
IsEnabled="{Binding bVisibilty = AnotherCollection.Count > 0 ? true:false}"/> 

Je peux utiliser un convertisseur qui convertira le nombre de Boolen, mais est-il une meilleure façon de faire que le convertisseur partout exagérer.

+0

Cela me semble bon. Un convertisseur qui reçoit une collection et renvoie un booléen à partir de la propriété Count –

+0

dans mvvm prend ceci à la machine virtuelle et un bool vient à la vue pour la visibilité – Viv

+1

Pourquoi le downVote? – Simsons

Répondre

3

Vous pouvez utiliser le style déclenche pour cela comme ceci:

<ComboBox > 
      <ComboBox.Style> 
       <Style TargetType="ComboBox"> 
        <Style.Triggers> 
         <DataTrigger Binding="{Binding AnotherCollection.Count}" Value="0"> 
          <Setter Property="Visibility" Value="Collapsed"/> 
         </DataTrigger> 
        </Style.Triggers> 
       </Style> 
      </ComboBox.Style> 
     </ComboBox> 

Il est évident que AnotherCollection doit être un ObservableCollection afin que l'interface utilisateur soit notifiée chaque fois que l'élément est ajouté \ retiré

+0

Ne doit pas être un 'ObservableCollection' tant qu'il implémente' INotifyPropertyChanged'. –

2

Vous pouvez lier à une propriété sur votre ViewModel et mettre la logique booléenne et INPC dans le viewmodel