私は問題追跡ツールで作成したチケットに応答しましたが、ここでその返答も利用可能にします。
これはCatel v5でテストされていますが、v4でも動作するはずです。それから私は、VM内のコマンドのためのアクションを登録し
var commandManager = ServiceLocator.Default.ResolveType<ICommandManager>();
commandManager.CreateCommand("AddToCollectionCommand");
:
commandManager.RegisterCommand("AddToCollectionCommand", AddToCollectionCommand, this);
1.I 起動時にコマンドを作成します。
私は2つの変更を行いました
2.まずコマンドをバインドしてからxamlのコマンドパラメータを実行する必要があります(順序は問題ありませんが、それはxaです私たちは修正できません):
<!-- 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
あなたは(https://github.com/wildgums/orchestraを参照)オーケストラを使用する場合は、あなたもすぐに使えるUIでアプリ全体のコマンド入力ジェスチャーを再マッピングすることができます。
EventToCommandなしでCommandManagerBindingを使用できますか?言い換えれば、あなたのコマンドが正しく登録されていることを確認していますか? –
はい、まったく同じことをしているMenuItemのコマンドを使用しています。そして、それはMenuItemでうまくいきます。 – HumpaLumpa007
小さなReproを作成してCatel v5で修正できるようにしてください。 CommandManagerBindingは単なるグローバルなものなので、うまくいくはずです。 –