複数のページが添付されたビューモデルがあります。このViewModelのプロパティにバインドされたさまざまなコントロールのコマンドもあります。
ViewModelのコマンドがどのコントロールから呼び出されているかを知るにはどうすればよいですか?
複数のページが添付されたビューモデルがあります。このViewModelのプロパティにバインドされたさまざまなコントロールのコマンドもあります。
ViewModelのコマンドがどのコントロールから呼び出されているかを知るにはどうすればよいですか?
通常、ソースを知る必要はありません。ただし、状態ごとに常に解決策があります:)viewModelで次のようなプロパティを使用できます。
public UIElement Owner {get;set;}
//if(Owner.GetType() ...do bla bla
または、CommandParameterを使用することもできます
CommandParameter="123" ; CommandParameter="{Binding}"
しかし、ソース管理を知る必要がある場合は、設計に何かが欠けている可能性があると思います。しかし、私が同意するいくつかの条件は、これが必要になる可能性があります。
以下のJavaコードに示すように、アクションソースを取得する方法はありません。この概念では、ソースオブジェクトには関心がありません。たぶん、モデルまたはモデルの動作の一部は珍しく実行されるはずです。
public void itemStateChanged(ItemEvent e) {
...
Object source = e.getItemSelectable();
if (source == chinButton) {
//...make a note of it...
} else if (source == glassesButton) {
//...make a note of it...
} else if (source == hairButton) {
//...make a note of it...
} else if (source == teethButton) {
//...make a note of it...
}