我有一个ViewModel,其中包含一个通过CommandManager
向其他视图公开的命令。
现在,如果我双击EventToCommand
(https://catelproject.atlassian.net/wiki/display/CTL/EventToCommand)的项目,我想使用TreeView
来触发命令。
如果我使用catel:CommandManagerBinding
,则不会触发命令,对View的ViewModel的命令正常Binding
工作正常。但我需要绑定到另一个ViewModel的命令。
提前致谢
答案 0 :(得分:0)
使用InvokeCommandAction怎么样?
答案 1 :(得分:0)
我已对问题跟踪器上创建的故障单做出响应,但也会在此处提供可用性。
请注意,这已经过Catel v5测试,但也适用于v4。
我做了两处修改:
1.I 在启动时创建命令:
var commandManager = ServiceLocator.Default.ResolveType<ICommandManager>();
commandManager.CreateCommand("AddToCollectionCommand");
然后我在VM中注册命令的操作:
commandManager.RegisterCommand("AddToCollectionCommand", AddToCollectionCommand, this);
2.你必须首先绑定命令,然后绑定xaml中的命令参数(顺序很重要,虽然它不应该,但是我们无法修复的xaml解析问题):< / p>
<!-- now works! -->
<catel:EventToCommand Command="{catel:CommandManagerBinding AddToCollectionCommand}"
CommandParameter="{Binding SelectedDataItem}"
DisableAssociatedObjectOnCannotExecute="False" />
我建议您也查看应用程序范围的命令容器。它们非常强大,可以让您分开关注点。你可以在这里找到文档:
http://docs.catelproject.com/vnext/catel-mvvm/commands-events/application-wide-commands
如果您使用Orchestra(请参阅https://github.com/wildgums/orchestra),您甚至可以使用即用型UI重新映射应用程序范围的命令输入手势。