2017-06-21 15 views
2

私は、CommandManager経由で他のビューに公開されるコマンドを含むViewModelを持っています。EventToCommandとCommandManagerBindingが機能しない

EventToCommandを使用して、TreeViewhttps://catelproject.atlassian.net/wiki/display/CTL/EventToCommand)の項目をダブルクリックすると、コマンドを起動します。

残念なことに残念なことに、catel:CommandManagerBindingを使用するとコマンドがトリガーされないため、ビューのViewModelのコマンドに通常のBindingが正常に機能しています。しかし、別のViewModelのコマンドにバインドする必要があります。

ありがとうございました

+0

EventToCommandなしでCommandManagerBindingを使用できますか?言い換えれば、あなたのコマンドが正しく登録されていることを確認していますか? –

+0

はい、まったく同じことをしているMenuItemのコマンドを使用しています。そして、それはMenuItemでうまくいきます。 – HumpaLumpa007

+0

小さなReproを作成してCatel v5で修正できるようにしてください。 CommandManagerBindingは単なるグローバルなものなので、うまくいくはずです。 –

答えて

0

私は問題追跡ツールで作成したチケットに応答しましたが、ここでその返答も利用可能にします。

これは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でアプリ全体のコマンド入力ジェスチャーを再マッピングすることができます。

関連する問題