4

Possible Duplicate:
Passing two command parameters using a WPF binding

I need that send two parameters to my RelayCommand like:

public RelayCommand<String,Int> MyCommand {get;set;} Or
public RelayCommand<EventArgument,String> MyCommand {get;set;}
Community
  • 1
  • 1
M.Azad
  • 3,673
  • 8
  • 47
  • 77

2 Answers2

13

Wrap them in an object:

public RelayCommand<MyModel> MyCommand { get; set; }

where MyModel will contain the two properties:

public class MyModel
{
    public int Id { get; set; }
    public string Name { get; set; }
}
Darin Dimitrov
  • 1,023,142
  • 271
  • 3,287
  • 2,928
9

You can use a distinct model class in order to pass several parameters. And in order to initialize them, you can use xaml elements like this:

<Button Command="{Binding YourCommand}">
   <Button.CommandParameter>
      <YourNS:YourModel Id="{Binding PathForId}" Name="{Binding PathForName}"/>
   </Button.CommandParameter>
</Button>

This will construct a new YourModel object to pass to a command, and then will initialize its properties via bindings.

Vladimir Perevalov
  • 4,059
  • 18
  • 22
  • 1
    Actually this didn't end up working out for me in Silverlight. Instead I used the custom multibinding class mentioned in this article: http://www.codeproject.com/Articles/286171/MultiBinding-in-Silverlight-5 - no converter is needed, you just need to cast the object in to an object[]. – Doguhan Uluca Apr 10 '12 at 18:10