2009-11-22 4 views
4

Existe-t-il un moyen de déterminer si un ToggleButton est coché/décoché via DelegateCommand s?WPF ToggleButton et DelegateCommand

TIA, Mike

code XAML ci-dessous. J'utilise ItemsControl et la liaison à une collection. Je veux fondamentalement un moyen d'obtenir le statut de basculement de chaque bouton quand on clique dessus.

<ScrollViewer VerticalScrollBarVisibility="Auto"> 
    <ItemsControl ItemsSource="{Binding Modifiers, Mode=TwoWay}"> 
     <ItemsControl.Template> 
      <ControlTemplate> 
       <ScrollViewer ScrollViewer.VerticalScrollBarVisibility="Auto"> 
        <WrapPanel Margin="10" Width="{TemplateBinding Width}" 
           Height="{TemplateBinding Height}" 
           FlowDirection="LeftToRight" IsItemsHost="true"> 
        </WrapPanel> 
       </ScrollViewer> 
      </ControlTemplate> 
     </ItemsControl.Template> 
     <ItemsControl.ItemTemplate> 
      <DataTemplate> 
       <ToggleButton FontSize="18" Opacity="0.8" 
           Command="{Binding DataContext.ModifierToggleCommand, 
             RelativeSource={RelativeSource FindAncestor, 
             AncestorType={x:Type Views:ModifiersView}}}" 
           CommandParameter="{Binding}" Height="80" Width="200" Margin="5" 
           Content="{Binding Path=ModifierName}" /> 
      </DataTemplate> 
     </ItemsControl.ItemTemplate> 
    </ItemsControl> 
</ScrollViewer> 
+0

Pourriez-vous écrire un code? –

Répondre

1

Pouvez-vous préciser le CommandParameter déclarative dans le XAML et utiliser un élément de liaison pour remplir la valeur avec la valeur actuelle de la bascule?

+0

Hmm ... pas exactement sur ce que vous suggérez ici. Pouvez-vous développer? – Mike

+0

http://msdn.microsoft.com/en-us/library/ms752308.aspx donne un aperçu de la commande, ICommandSource interface vous donne le CommandParameter, mais vous pouvez trouver l'implémentation RoutedCommand (et obtenir RoutedEventArgs) plus facile/plus approprié. – Andrew

7

Une solution plus simple consisterait à lier la propriété IsChecked à une propriété de votre ViewModel. De cette façon, il suffit de vérifier la valeur de la propriété ...

+1

Merci pour la suggestion, mais j'ai plusieurs ToggleButtons sur l'écran ... et ils pourraient être nombre variable d'entre eux. – Mike

+0

Comment avoir plusieurs boutons vous empêchent de les lier au viewmodel? Ils ont évidemment un identifiant unique qui pourrait être utilisé comme clé pour une propriété de collection. –

+1

Chaque ToggleButton correspond à un élément de la collection Modifiers. Vous devez donc placer la propriété IsChecked dans les éléments de la collection. –

Questions connexes