【问题标题】:Is it possible to have two parameters with CommandParameter and RelayCommand in UWP?UWP 中是否可以使用 CommandParameter 和 RelayCommand 有两个参数?
【发布时间】:2020-08-23 18:49:30
【问题描述】:

我想这样做:

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:这只是可视化的伪代码。它显然不起作用。

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

【问题讨论】:

  • 你可以创建一个包含两个属性的类
  • 是的,这似乎是这样做的方式。但是我应该在 xaml 代码中这样做吗?
  • 属性是否来自另一个元素?如果是这样,您可以直接将元素作为参数传递。
  • “但是我应该在 xaml 代码中这样做吗?” -- 与在 XAML 中设置任何对象的多个属性的方式相同。例如,您可以设置Window.DataContextWindow.ResourcesWindow.Content 等,其中每个属性都接收自己的对象。只需对您自己的复合对象执行相同操作即可。

标签: c# xaml mvvm uwp relaycommand


【解决方案1】:

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

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

例子:

您的RemoveItem 命令需要BackpackSchoolGear

创建一个像下面这样的对象,

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-18
    • 2011-08-16
    相关资源
    最近更新 更多