如何以编程方式使用wpf mvvm调用带参数的中继命令?

时间:2018-08-08 15:08:13

标签: wpf mvvm relaycommand

我知道如何使用mvvm模式调用不带参数的中继命令,但是如何对带参数的命令执行相同的操作?

https://i.stack.imgur.com/o7r5i.jpg
https://i.stack.imgur.com/zNkYR.jpg
https://i.stack.imgur.com/lmw3w.jpg
https://i.stack.imgur.com/iJnF0.jpg

2 个答案:

答案 0 :(得分:0)

您将中继命令绑定到的控件(例如Button / MenuItem)除具有Command属性外,还将具有CommandParameter属性。

有关用法的示例,请参见here

要从后面的代码中执行命令,只需使用所需参数调用其Invoke()方法即可。

答案 1 :(得分:0)

如果我正确理解您的命令,则您的命令要求您传入TextEditor对象作为参数,并且您想知道如何在XAML中执行此操作。由于您的TextEditor名为XMLView,您只需将其绑定到命令参数;

<KeyBinding Command="{Binding ValidateXMLCommand}" CommandParameter="{Binding ElementName=XMLView}" Modifiers="Control" Key="V" />

请注意,添加了CommandParameter="{Binding ElementName=XMLView}",这会将AvalonEdit TextEditor控件实例作为命令的参数传递。

了解更多; https://stackoverflow.com/a/32064646/8520655

如果您打算从ViewModel中调用RelayCommand(在正常的C#中),请执行以下操作;

if (ValidateXMLCommand.CanExecute(XMLView))
                ValidateXMLCommand.Execute(XMLView);

另外,请不要发布代码图像,而要发布使用代码样式设置的代码。