2010-08-19 3 views
0

J'utilise MVVM Light toolkit pour mon application WPF et je voudrais savoir s'il est possible, en utilisant EventToCommand, de transmettre plusieurs paramètres à RelayCommand et Est-il possible de passer les propriétés de EventArgs au lieu de passer l'ensemble EventArgs?Comment passer plusieurs paramètres et propriétés EventArgs lors de l'utilisation de EventToCommand dans MVVM-Light toolkit

Cordialement, Nabeel

+0

La propriété EventToCommand n'a qu'un seul paramètre de commande, mais vous pouvez jeter un coup d'œil à la source pour voir comment la propriété attachée est définie et ajouter plus de paramètres. –

+0

Pourquoi voudriez-vous passer les propriétés de EventArgs si vous pouvez passer le paramètre EventArg entier? Veuillez développer votre scénario et expliquer ce que vous essayez d'accomplir. –

+0

Bonjour Matt, je ne veux pas passer d'EventArgs car je ne veux pas que mon viewmodel dépende de divers dérivés de Eventargs (par exemple keyupeventargs, keydowneventargs) pour différents types d'événements. Je veux juste passer les données/propriétés dont j'ai besoin d'EventArgs à ma méthode viewmodel. C'est plus propre je pense. – nabeelfarid

Répondre

2

si le scénario est

<i:Interaction.Triggers> 
       <i:EventTrigger EventName="KeyDown"> 
        <cmd:EventToCommand Command="{Binding SearchKey}" PassEventArgsToCommand="True" 
        CommandParameter="{Binding Text, ElementName=TextSearchCashDrawer}"/> 
       </i:EventTrigger> 
      </i:Interaction.Triggers> 

ce qui est sur entrer appuyer sur la touche i besoin de lire le texte de la zone de texte et effectuer une recherche.

 SearchKey=new RelayCommand<KeyEventArgs>(e=> 
                { 
                 if(e.PlatformKeyCode==13) //enter key 
                 { 


                 } 
                }); 

en utilisant ce que je peux filtrer quelle touche a été pressé, mais comment obtenir ce paramètre si vous appuyez sur la touche Entrée dans ce mvvmlight.

+0

vous pouvez lier la valeur Textbox à une autre propriété sur votre viewmodel et utiliser cette propriété dans votre commande de relais – nabeelfarid

2

Si tout ce que vous voulez faire est de capturer la touche Entrée, vous pouvez créer un KeyBinding via InputBinding. L'exemple suivant dans XAML capturerait la touche Entrée dans le TextBox et la commande, FindCommand dans ce cas, le traiterait dans votre ViewModel.

<TextBox Width="80"> 
    <TextBox.InputBindings> 
      <KeyBinding Key="Enter" Command="{Binding FindCommand}" /> 
    </TextBox.InputBindings> 
</TextBox> 

J'ai travaillé pour moi!

Questions connexes