2010-12-09 4 views
2

J'ai une interface de requête complexe que j'ai besoin de transmettre via RelayCommand à mon modèle. Cela consiste en quelques comboboxes, cases à cocher et entrées de texte.Utilisation de RelayCommand pour envoyer des données complexes à un modèle MVVM

Je peux facilement transmettre un seul paramètre de commande (c'est-à-dire RelayCommand, etc.), mais comment encapsuler les commandes, si RelayCommand, etc. semble un peu excessif.

Les conseils seraient grandement appréciés

Merci

Répondre

4

solution acceptable est de lier tous vos comboboxes, cases à cocher et les entrées de texte à des propriétés particulières de votre modèle de vue, puis utiliser les valeurs des accessoires dans votre gestionnaire de RelayCommand au lieu de transmettre des données en tant que CommandParameter.

Voici un exemple:

Votre XAML:

<TextBox Text={Binding Arg1} /> 
<TextBox Text={Binding Arg2} /> 
<Button Command={Binding Cmd} /> 

Votre ViewModel.cs:

public string Arg1 { get; set; } 
public string Arg2 { get; set; } 
public ICommand Cmd { get; set; } 

... 

Cmd = new RelayCommand(OnCmd); 

... 

// We will not use command parameter at all 
private void OnCmd(object o) 
{ 
    // Some logic that uses a lot of arguments 
    Console.WriteLine(Arg1 + Arg2); 
} 
+0

Pourquoi serait-ce considéré comme une solution de contournement, et ne pas utiliser le modèle comme prévu. –

+0

ok, appelons cette 'solution' – levanovd

+0

Oui, c'est le modèle typique d'utilisation dans mon expérience. Le paramètre est rarement utilisé. –

Questions connexes