2010-08-19 4 views
0

Я изучаю, чтобы использовать шаблон MVVM для моего приложения Silverlight.Как передать два параметра классу ViewModel в Silverlight?

После кода из кода XAML UI:

<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" /> 

И следующий код из ViewModel класса:

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

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

мне нужно передать два параметра, однако, не может узнать, как передать два параметра (id и name) в класс ViewModel.

Я хотел бы узнать, возможно ли это в коде xaml не в коде.

Заранее спасибо

ответ

1

Там нет простого способа сделать это. Вместо этого я предлагаю вам сделать команду без параметров, и привязать окно TextBoxes к свойствам вашего 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

Спасибо за ответ , он решает мою проблему, однако кажется, что в Silverlight требуется многосвязывание featere. – Ray

+0

Multibinding? Зачем ? Вы привязываетесь только к одному свойству за раз, поэтому простая привязка отлично работает –

+0

Еще я удивляюсь, можем ли мы отправить два или более параметра или нет? –

Смежные вопросы