一个用于多个页面的ViewModel

时间:2012-10-10 09:13:56

标签: silverlight mvvm action viewmodel

我有一个附有多页的视图模型。我还有关于绑定到此ViewModel中的属性的不同控件的命令。

我如何知道从哪个控件调用ViewModel中的Command?

1 个答案:

答案 0 :(得分: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...
}