首页 > 解决方案 > UWP 中是否可以使用 CommandParameter 和 RelayCommand 有两个参数?

问题描述

我想做这个:

XAML

<Button Content="Remove item" Command="{Binding ElementName=lvBackpacks, Path=DataContext.RemoveItemFromBackpackCommand}" CommandParameter="{Binding property1} {Binding property2}}"/>

视图模型

RemoveItemFromBackpackCommand = new RelayCommand<Type1, Type2>(param1, param2 =>
        {
            DoSomething(param1, param2);
        });

PS:这只是可视化的伪代码。它显然不起作用。

有什么方法可以传递两个命令参数吗?

标签: c#xamlmvvmuwprelaycommand

解决方案


,您不能将 2 个单独的对象绑定到同一个CommandParameter属性。

但是,您可以创建一个包含命令所需的所有参数的对象,然后将其绑定。

例子:

您的RemoveItem命令需要 aBackpack和 a SchoolGear

创建一个如下所示的对象,

public class SchoolGearItemViewModel
{
    Backpack Backpack { get; set; }
    SchoolGear SchoolGear { get; set; }
}

并更改您的命令,使其采用SchoolGearItemViewModel参数而不是其他 2 个对象。


推荐阅读