我知道如何使用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
答案 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);
另外,请不要发布代码图像,而要发布使用代码样式设置的代码。