我有一个附有多个页面的 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/