开发者

How to pass two parameters to ViewModel class in Silverlight?

I am studying to use MVVM pattern for my Silverlight application.

Following code is from xaml UI code :

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

And following code is from ViewModel class :

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

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

I need to pass two parameters, however, can't find out how to开发者_StackOverflow pass two parameters(id and name) to ViewModel class.

I'd like to know if it is possible in xaml code not in the codebehind.

Thanks in advance


There's no easy way to do it. Instead, I suggest you make a command with no parameters, and bind box TextBoxes to properties of your 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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜