如何将两个参数传递给Silverlight中的ViewModel类?

时间:2010-08-19 08:48:30

标签: mvvm silverlight-4.0

我正在研究将MVVM模式用于我的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 个答案:

答案 0 :(得分: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" />