mvvm-light:我们应该在定位器中合并Cleanup方法吗?

3
在定位器类中使用代码片段创建新的ViewModel时,它会创建一个Cleanup方法,但是从Main中已经有一个可用的Cleanup方法,因此会出现错误...我们应该将它们合并吗?或者我们应该将该方法重命名为Cleanup[ViewModel名称],例如。我有点困惑。另一个问题是关于命名约定的,我试图遵循“MAIN”使用的命名约定...因此我有CreateLogin、ClearLogin、Login(用于绑定的非静态属性)等等。使用CreateLoginViewModel、ClearLoginViewModel等是否更好呢?只是好奇。谢谢
1个回答

4
这个代码片段(以及ViewModelLocator)需要改进,在V4中会有重大变化。
是的,合并由代码片段生成的Cleanup方法和已有的方法是意图所在。想法是只需调用ViewModelLocator.Cleanup(),就可以让所有VM自我清理(例如将它们的状态持久化到本地存储、关闭流等)。由于代码片段无法修改现有方法,我决定只复制Cleanup方法。它不能编译,因此开发人员应该知道如何合并它们。
话虽如此,为每种VM类型创建CreateMain、ClearMain等不是一个令人满意的实现。我认为我们都同意这是一个薄弱的实现,我想通过在未来(V4)提供通用的ViewModelLocator来改进它。
关于命名约定,它们只是约定。我厌倦了打“ViewModel”,但你可以随意使用自己的约定。正如我所说,代码片段在V4中可能不再需要。在此期间抱歉给您带来的不便;)(请注意,如果您想要,可以轻松修改代码片段)
祝好, Laurent

所以我将所有的ClearVM语句移动到ViewModelLocator中的单个Cleanup方法中,但是当我退出我的WP7应用程序时,我注意到它会在我没有使用的VM上抛出一个错误。为了解决这个问题,我将清理检查包装在IsNull检查中,但我担心我做错了什么(我有一个奇怪的错误,我的消息会多次触发,我认为它与Cleanup有关-http://stackoverflow.com/questions/4049387/mvvmlight-message-register-firing-multiple-times-in-wp7-cleanup-problem-提前感谢任何见解!) - Rodney

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接