我有一个附有多个页面的 View 模型。我在绑定(bind)到此ViewModel属性的不同控件上也有Commands。

我怎么知道ViewModel中的Command是从哪个控件调用的?

最佳答案

通常,您不需要知道来源。但是每种状态总有解决方案:)
您可以在viewModel中使用属性,例如

public UIElement Owner {get;set;}
//if(Owner.GetType() ...do bla bla

或者您可以使用CommandParameter
CommandParameter="123" ; CommandParameter="{Binding}"

但是我认为,如果我们需要了解源代码控制,我们的设计中可能会缺少一些东西。但是我同意某些条件是必要的。

如下面的Java代码所示,无法获取 Action 源,我们对使用此概念的源对象不感兴趣。也许模型或模型的部分行为不常见。
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...
}

关于silverlight - 一种用于多个页面的ViewModel,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12815842/

10-17 01:08