1

複数のページが添付されたビューモデルがあります。このViewModelのプロパティにバインドされたさまざまなコントロールのコマンドもあります。

ViewModelのコマンドがどのコントロールから呼び出されているかを知るにはどうすればよいですか?

4

1 に答える 1

1

通常、ソースを知る必要はありません。ただし、状態ごとに常に解決策があります:)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...
}
于 2012-10-10T13:48:33.487 に答える