首页 > 代码库 > WPF – pass multiple parameters to a Command

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>

WPF – pass multiple parameters to a Command