是否可以在 UWP 中使用 CommandParameter 和 RelayCommand 设置两个参数?
Is it possible to have two parameters with CommandParameter and RelayCommand in UWP?
我想这样做:
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:这只是可视化的伪代码。它显然不起作用。
有什么方法可以传递两个命令参数吗?
否,不能将 2 个单独的对象绑定到同一个 CommandParameter
属性.
但是,您可以创建一个包含您的命令所需的所有参数的对象并改为绑定它。
例子:
您的 RemoveItem
命令需要 Backpack
和 SchoolGear
。
像下面这样创建一个对象,
public class SchoolGearItemViewModel
{
Backpack Backpack { get; set; }
SchoolGear SchoolGear { get; set; }
}
并更改您的命令,使其采用 SchoolGearItemViewModel
参数而不是其他 2 个对象。
我想这样做:
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:这只是可视化的伪代码。它显然不起作用。
有什么方法可以传递两个命令参数吗?
否,不能将 2 个单独的对象绑定到同一个 CommandParameter
属性.
但是,您可以创建一个包含您的命令所需的所有参数的对象并改为绑定它。
例子:您的 RemoveItem
命令需要 Backpack
和 SchoolGear
。
像下面这样创建一个对象,
public class SchoolGearItemViewModel
{
Backpack Backpack { get; set; }
SchoolGear SchoolGear { get; set; }
}
并更改您的命令,使其采用 SchoolGearItemViewModel
参数而不是其他 2 个对象。