Как передать два параметра классу ViewModel в Silverlight? - PullRequest
0 голосов
/ 19 августа 2010

Я учусь использовать шаблон MVVM для моего приложения Silverlight.

Следующий код взят из кода пользовательского интерфейса 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" />

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

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

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

Мне нужно передать два параметра, однако я не могу понять, как передать два параметра (идентификатор и имя) в класс ViewModel.

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

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

1 Ответ

1 голос
/ 19 августа 2010

Нет простого способа сделать это.Вместо этого я предлагаю вам сделать команду без параметров и привязать поле TextBoxes к свойствам вашей модели представления:

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" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...