有时,我需要从View到VM进行一些调用。我知道,它不是MVVM风格,但仍然。我应该总是重新检查DataContext是否为我的VM(如果可以通过从墓碑或类似的东西重新激活来更改它),或者它足以存储一次?
var vm = DataContext as MyViewModel;
if (vm == null) return;
vm.DoSomething();
通过Mvvm Light Locator
设置DataContextDataContext="{Binding MyViewModel, Mode=OneWay, Source={StaticResource ViewModelLocator}}"
答案 0 :(得分:0)
我有时使用它,就像那样:
private MyViewModel viewModel;
何时加载页面,然后为该字段添加值
viewModel = (MyViewModel)DataContext;
我可以随时随地使用它。
我知道它不是MVVM,但仍然;)
答案 1 :(得分:0)
当它仅限于页面时,它总是安全的。无论是在构造函数,Loaded事件处理程序还是OnNavigatedTo中,您都可以创建对象而不再检查它们 - 页面是用所有对象保存在内存中的,还是构造函数Loaded和OnNavigatedTo在从逻辑删除重新激活后再次调用。墓碑问题主要发生在 one page 依赖于事实的情况下,其他页面创建了一些东西。