在Xaml按钮

时间:2017-04-19 16:03:15

标签: c# wpf xaml mvvm

我目前正在使用MVVM格式的WPF / Xaml开发应用程序。

我试图从一个按钮运行2个命令来关闭控件并删除控件所基于的对象。

创建这些命令的视图模型是独立的,因此我不确定如何在View模型中执行此操作。

我希望有一个解决方案,如果可能的话,只需在Xaml中运行这两个命令

必要时的代码

<Button Grid.Column="4"
Command="{Binding DeleteCustom}"
Visibility="{Binding IsCustom}"/>

我想要运行的另一个命令叫做

CancelCommand

我希望有人可以提供帮助

2 个答案:

答案 0 :(得分:1)

只有一个Command属性可以设置为单个ICommand,但您可以在视图模型中创建另一个命令属性,该属性执行这两个命令并绑定到此命令:

public ICommand CompositeCommand { get; } = new RelayCommand<object>((arg) =>
{
    DeleteCustom.Execute(null);
    CancelCommand.Execute(null);
});

答案 1 :(得分:0)

也许如果你在基类中编写命令并覆盖它

ViewModelBase
{

    public virtual ICommand CompositeCommand { get; } = new RelayCommand<object>((arg) =>
    {
        DeleteCustom.Execute(null);
        CancelCommand.Execute(null);
    });

    protected virtual DeleteCustom(object arg)
    {
       /.....
    }

    protected virtual CancelCommand(object arg)
    {
        /....
    }

    //..........
}


FirstViewModel : ViewModelBase
{
    // ...............

    protected override void  DeleteCustom(object arg)
    {
    }
    // ..........
}

SecondviewModel : ViewModelBase
{
     // ...............

    protected override void  CancelCommand(object arg)
    { 

    }
    // ..........
}