【发布时间】:2012-10-10 09:13:56
【问题描述】:
我有一个带有多个页面的视图模型。我还对绑定到此 ViewModel 中的属性的不同控件的命令。
我如何知道 ViewModel 中的命令是从哪个控件调用的?
【问题讨论】:
标签: silverlight mvvm action viewmodel
我有一个带有多个页面的视图模型。我还对绑定到此 ViewModel 中的属性的不同控件的命令。
我如何知道 ViewModel 中的命令是从哪个控件调用的?
【问题讨论】:
标签: silverlight mvvm action 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...
}
【讨论】: