2010-08-19 6 views
0

J'étudie pour utiliser le modèle MVVM pour mon application Silverlight.Comment passer deux paramètres à la classe ViewModel dans Silverlight?

code suivant est à partir du code de l'interface utilisateur de XAML:

<Button Width="30" 
     Margin="10" 
     Content="Find" 
     Command="{Binding Path=GetCustomersCommand, Source={StaticResource customerVM}}" 
     CommandParameter="{Binding Path=Text, ElementName=tbName}"/> 

<TextBox x:Name="tbName" 
     Width="50" /> 

<TextBox x:Name="tbID" 
     Width="50" /> 

et le code suivant est de la classe ViewModel:

public ICommand GetCustomersCommand 
{ 
    get { return new RelayCommand(GetCustomers) { IsEnabled = true }; } 
} 

public void GetCustomers(string name, string id) 
{ 
    // call server service (WCF service) 
} 

Je dois cependant passer, deux paramètres, ne peut pas savoir comment passez deux paramètres (id et name) à la classe ViewModel.

Je voudrais savoir si c'est possible dans le code xaml pas dans le codebehind.

Merci à l'avance

Répondre

1

Il n'y a pas moyen facile de le faire. Au lieu de cela, je vous suggère de faire une commande sans paramètre, et la boîte de liaison TextBoxes aux propriétés de votre ViewModel:

C#

public void GetCustomers() 
{ 
    GetCustomers(_id, _name); 
} 

private int _id; 
public int ID 
{ 
    get { return _id; } 
    set 
    { 
     _id = value; 
     OnPropertyChanged("ID"); 
    } 
} 

private string _name; 
public string Name 
{ 
    get { return _name; } 
    set 
    { 
     _name = value; 
     OnPropertyChanged("Name"); 
    } 
} 

XAML

<Button Width="30" 
     Margin="10" 
     Content="Find" 
     Command="{Binding Path=GetCustomersCommand, Source={StaticResource customerVM}}"/> 

<TextBox x:Name="tbName" 
     Text="{Binding Path=Name, Source={StaticResource customerVM}, Mode=TwoWay}" 
     Width="50" /> 

<TextBox x:Name="tbID" 
     Text="{Binding Path=ID, Source={StaticResource customerVM}, Mode=TwoWay}" 
     Width="50" /> 
+0

Merci pour votre réponse , il résout mon problème, cependant, il semble que multi-liaison featere est nécessaire dans Silverlight, cependant. – Ray

+0

Reliure multiple? Pourquoi ? Vous n'êtes lié à une propriété à la fois, donc une liaison simple fonctionne bien –

+0

Encore je me demande peut-on envoyer deux ou plusieurs paramètres ou non? –

Questions connexes