如何从发送多个参数Button
在WPF
? 我可以送单个参数是有价值的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
}
我怎么能在WPF发送来自按钮多个参数。
您只能发送一个参数作为CommandParameter
。
更好的解决方案通常是在刚刚绑定TextBox
和其他控件在您的视图模型多个属性。 然后,命令将有机会获得所有这些属性的(因为它是在同一个班),没有必要在所有的命令参数。
除了使用在你的类定义属性的方法(我们称之为您的视图模型),通过您的视图绑定,有次(不常见),在这里我们不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。