WPF – pass multiple parameters to a Command

public class SendCommand : ICommand
{
public void Execute(object parameter)
{
var labels = ((object[]) parameter).OfType<Label>();
}
public bool CanExecute(object parameter)
{
return true;
}
public event EventHandler CanExecuteChanged = delegate {};
}
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
DataContext = this;
SendCommand = new SendCommand();
}
public ICommand SendCommand { get; set; }
}
public class PassThroughConverter : IMultiValueConverter
{
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
return values.ToArray();
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
<Window x:Class="WpfApplication5.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:wpfApplication5="clr-namespace:WpfApplication5"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<wpfApplication5:PassThroughConverter x:Key="PassthroughConverter" />
</Window.Resources>
<Grid>
<StackPanel>
<Label Name="Greeting">Hello</Label>
<Label Name="Farewell">Goodbye</Label>
<Button Command="{Binding SendCommand}">Hit me
<Button.CommandParameter>
<MultiBinding Converter="{StaticResource PassthroughConverter}">
<Binding Path="." ElementName="Greeting"></Binding>
<Binding Path="." ElementName="Farewell"></Binding>
</MultiBinding>
</Button.CommandParameter>
</Button>
</StackPanel>
</Grid>
</Window>

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Shout it
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter
Google Buzz (aka. Google Reader)
This entry was posted in Uncategorized. Bookmark the permalink.