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 回答