【发布时间】:2020-10-20 13:26:15
【问题描述】:
我有以下使用 Prism 库创建的 DelegateCommand。
public class AddressModel : INotifyPropertyChanged
{
public ICommand MyButtonClickCommand
{
get { return new DelegateCommand<object>(FuncToCall); }
}
public void FuncToCall(object context)
{
//this is called when the button is clicked
Method1("string1", integer_number1);
}
}
我已经将MyButtonClickCommand 绑定到 XAML 文件中的按钮。
<Button Content="Click me"
Command="{Binding MyButtonClickCommand}"/>
但我想将相同的MyButtonClickCommand 用于另外两个按钮,而不是创建两个额外的 DelegateCommands MyButtonClickCommand1 和 MyButtonClickCommand2。
所以我想要添加 string1 和 integer_number1 作为参数,并在不同的按钮上调用相同的 ICommand,如下所示
<Button Content="Click me"
Command="{Binding MyButtonClickCommand("string1", integer_number1)}"/>
<Button Content="Click me 2"
Command="{Binding MyButtonClickCommand("string2", integer_number2)}"/>
<Button Content="Click me 3"
Command="{Binding MyButtonClickCommand("string3", integer_number3)}"/>
【问题讨论】:
-
您可以将单个对象传递给 Button 的 CommandParameter 属性,例如通过绑定或直接分配。该对象作为参数传递给命令的 Execute 处理程序方法。
-
@Clemens 感谢您的评论。但是 Execute 处理程序如何知道“string1”和 integer_number1 放在
FuncToCall()内的什么位置? -
@Clemens 我也认为我不能使用超过 1 次 CommandParameter。根据我的问题,我有 2 个参数要传入 DelegateCommand
标签: c# wpf prism delegatecommand