2016-12-25 113 views
0

是否可以在Catel中注册仅在特定控件具有焦点时才会触发的应用程序命令?Catel仅适用于集中控制的应用程序命令

例如,在Catel.Examples.WPF.Commanding例如, (https://github.com/Catel/Catel.Examples/tree/master/src/NET/Catel.Examples.WPF.Commanding) 如果我TextBox取代TextBlockApplicationCOmmands.CutApplicationCommands.Paste添加RibbonButton情况下,它们的应用命令只能在集中TextBox

是否可以使刷新命令仅在DocumentView上执行,它有一个焦点?

另外,是否有使用RoutedUICommands与Catel及其ICommandManager的例子或指导?

感谢, 汤姆

回答

1

,如果您注册一个空的应用范围的命令这是可能的。然后,您可以在初始化视图模型时添加一个动作/子命令,并在vm再次关闭时取消注册。这样,将针对所有“打开”实例调用该命令(并且只有在有一个或多个子命令可用时才可执行)。

+0

嗯,我不明白...在命令示例中有4个DocumentViewViewModel同时被初始化和激活,所以它们都执行Refresh命令。我只想刷新其中一个,焦点(我用TextBox代替TextBlock,这更接近我的实际问题)。我可以使它与Routed命令和System.Windows.Input.CommandManager而不是IComandManager一起工作,但如果可能的话,我宁愿不将它们混合。我查看了Catel,LogViewer,Orchestra的一个类似的例子,但是找不到任何东西。你可以在某处发布一个修改过的指挥例子吗?谢谢。 – Tom

+0

然后,您需要在SelectedTabChanged上手动取消注册命令。 –

相关问题