多个命令参数WPF按钮对象(Multiple command parameters wpf butt

2019-08-21 22:55发布

如何从发送多个参数ButtonWPF ? 我可以送单个参数是有价值的TextBox正常。 下面是代码。

XAML

<TextBox Grid.Row="1" Height="23" HorizontalAlignment="Left" Margin="133,22,0,0"     Name="textBox1" VerticalAlignment="Top" Width="120" />
<Button Content="Button" Grid.Row="1" Height="23" Command="{Binding Path=CommandClick}" CommandParameter="{Binding Text,ElementName=textBox1}" HorizontalAlignment="Left" Margin="133,62,0,0" Name="button1" VerticalAlignment="Top" Width="75" />

Code behind

public ICommand CommandClick { get; set; }

this.CommandClick = new DelegateCommand<object>(AddAccount);

private void AddAccount(object obj)
{
    //custom logic
}

Answer 1:

我怎么能在WPF发送来自按钮多个参数。

您只能发送一个参数作为CommandParameter

更好的解决方案通常是在刚刚绑定TextBox和其他控件在您的视图模型多个属性。 然后,命令将有机会获得所有这些属性的(因为它是在同一个班),没有必要在所有的命令参数。



Answer 2:

除了使用在你的类定义属性的方法(我们称之为您的视图模型),通过您的视图绑定,有次(不常见),在这里我们不wan't这样做,一个重要的工具,要知道这些情况是MultiBinding,所以只是为了完整起见,即使你是满意的第一选择,我将介绍另一种方法。

所以回答你的问题:

1. MVVM方法:

使用MVVM方法,并定义属性由你的看法绑定,并使用您的视图模型的命令这些属性,而不需要CommandParameters。

2. MultiBinding:( 能快乐地生活与MVVM方法)

将命令传递参数作为多绑定参数,如下所示:

 <Button Content="MultiBindingExample" Command="{Binding MyCommand}">
     <Button.CommandParameter>
         <MultiBinding Converter="{StaticResource MyMultiConverter}">
             <Binding Path="..." ElementName="MyTextBox"/>
             <Binding Path="..." ElementName="MySomethingElse"/>
         </MultiBinding>
     </Button.CommandParameter>
 </Button>

有了您的转换器使用定义IMultiValueConverter接口:

public class MyMultiConverter: IMultiValueConverter
{
    public object Convert(object[] values, ...)
    {
        return values.Clone();
    }
}

和用于提取的值:简单地指的是参数在命令作为Object[]并使用参数以相同的顺序如在MultiBinding。



文章来源: Multiple command parameters wpf button object