2011-06-08 4 views
0

Comment puis-je définir un déclencheur sur un ComboBox lorsque le SelectedIndex est supérieur à 0 (fondamentalement, lorsqu'une option est sélectionnée), un autre ComboBox est modifié. Ce que j'ai sont deux ComboBox es mais l'utilisateur peut seulement choisir parmi l'un d'entre eux. Donc, si je choisis la première option de ComboBox A alors ComboBox B devrait obtenir un SelectedIndex de 0, et vice versa.Déclenchement lorsque `SelectedIndex` est supérieur à 0

J'ai essayé de jouer avec ce qui suit mais je ne sais pas comment capturer la logique requise.

<ComboBox ItemsSource="{Binding AvailableStatuses}" 
      SelectedItem="{Binding SelectedStatus}" 
      Grid.Row="1" Grid.Column="1" DisplayMemberPath="Name" 
      x:Name="Statuses"> 
    <ComboBox.Style> 
     <Style TargetType="{x:Type ComboBox}"> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding ElementName=Decisions}" Value="0"> 
        <Setter Property="SelectedIndex" Value="0" /> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </ComboBox.Style> 
</ComboBox> 

Quel type de déclencheur dois-je regarder?

Répondre

3

Je pense que ce serait beaucoup plus simple d'avoir juste cette logique dans le ViewModel, où votre propriété « SelectedStatus » est. Si la valeur entrée est supérieure à 0, définissez l'autre propriété ("SelectedStatus2"?) Sur 0 et vice versa.

+0

Je suis d'accord avec Ben K. Faire cela en XAML seulement sera très difficile si c'est possible. Codez la logique dans une VM ou utilisez le code derrière dans la vue. L'alternative serait d'écrire un contrôle utilisateur avec un contrôle d'éléments avec des listes déroulantes comme éléments. Le contrôle de l'utilisateur aurait alors du code pour appliquer une seule zone de liste déroulante. –

1

Pourquoi ne pas qu'affecter la SelectedIndex propriété de ComboBox B à la propriété SelectedIndex de ComboBox A?

1

Vous pouvez écrire un convertisseur qui retourne Vrai/Faux si le SelectedIndex est supérieur à 0

<DataTrigger Binding="{Binding ElementName=Decisions, 
    Converter={StaticResource IsValueGreaterThanZeroConverter}}" Value="True"> 
Questions connexes