我有一个带有多个页面的视图模型。我还有绑定到此 ViewModel 中属性的不同控件的命令。
我如何知道 ViewModel 中的命令是从哪个控件调用的?
我有一个带有多个页面的视图模型。我还有绑定到此 ViewModel 中属性的不同控件的命令。
我如何知道 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...
}