我有我的第一个MVVM Light应用程序,我一直非常好,并且在代码中没有任何内容。出于性能原因,我正在使用的图表控件需要调用来关闭它的更新,然后在图表系列更新后再次打开它。所以我需要从ViewModel调用控件上的方法。
现在,我可以通过“更大的锤子”方法实现所有这一切,方法是通过定位器的MainStatic方法将对图表控件的引用传递给ViewModel。我发现自己认为这不是应该完成的方式,而是我试图用“MVVM方式”做所有事情。任何MVVM Light大师能告诉我的方式吗?所有我发现的东西都是人们从后面的代码发送命令到ViewModel ......我需要走另一条路......或者至少我认为我做...; - )
答案 0 :(得分:2)
“更新”开关应该通过可绑定属性公开,而不是需要函数调用。然后,您只需通过绑定到View Model的属性即可打开和关闭它。
由于情况显然不是这样,也许您应该将图表控件包装在您自己的用户控件或子类中(稍微更难)。然后,您可以公开所需的任何属性(包括“更新”属性,其setter调用更新方法)。
我个人对使用基本用户控件的非MVVM方法(即代码隐藏)没有任何疑虑,因为它们应该被视为第三方控件而不是应用程序的一部分。对现有控件进行包装或子类化只会导致更好的可重用组件库。