特定のICommandが実行された後、コントロールに視覚効果を加える必要があります。たとえば、私のカスタムコントロールはAAACommandとBBBCommandプロパティを公開します。UserControlでコマンドが呼び出されたときを知る方法?
<myControl AAACommand={Binding ACommand}
BBBCommand={Binding BCommand} />
ここで、ACommandとBCommandはViewModelのコマンドです。 AAACommandがいつ実行されたかを知るために、私はUserControlでいくつかのUIを行うことができますか? ICommandがサブスクライブするExecutedイベントはありません。
編集: AAACommandは私のユーザーコントロール上で、このように定義されています
public static readonly DependencyProperty AAACommandProperty =
DependencyProperty.Register("AddCommand", typeof(RelayCommand), typeof(MyCustomControl), null);
public static readonly DependencyProperty AAACommandParameterProperty =
DependencyProperty.Register("AAACommandParameter", typeof(object), typeof(MyCustomControl), null);
public RelayCommand AAACommand
{
get { return (RelayCommand)GetValue(AAACommandProperty); }
set { SetValue(AAACommandProperty, value); }
}
public object AAACommandParameter
{
get { return (object)GetValue(AAACommandParameterProperty); }
set { SetValue(AAACommandParameterProperty, value); }
}
だから、ViewModelににaCommandはを呼び出すことで問題はありません、これは問題なく動作します。問題は、AAACommandがACommandをいつ実行するかをユーザのコントロールがどのように知るのかということです。そのため、UIで何かを行うことができます。
の正しいプロパティ値に戻り値を変換しますコンバータクラスいいえ、私はViewModelにはresponed何気にいけません。私はちょうど私のUserControlでこれをしたい:コマンドを呼び出すと、VIewModelの結果に関連していないカスタムロジックを実行した後。私のUserControlのアクションは、例えば、何かを展開したり、赤色などの色を付けたりすることができます。UIにコマンドをインターセプトするには、配線メカニズムがあるため、何らかの方法が必要です。 – Goran
@ゴラン私はこれが助けてくれることを望む、さらなる説明の例で私のコメントを更新しました – rlcrews
バインドできるUI要素がないのでElementNameを使用できません。コマンドからの戻り値はありません。私は解決策がCommandManagerにあると思うが、私はまだ解決策を見つけることができなかった。最後の手段は、MVVMのライトフレームワークからのものであるため、RelayCommandの実装を変更することです。ソースコードが利用可能です。 – Goran