从View到ViewModel的直接调用。 DataContext可以自行更改吗?

时间:2013-10-19 20:59:15

标签: c# windows-phone-7 data-binding mvvm mvvm-light

有时,我需要从View到VM进行一些调用。我知道,它不是MVVM风格,但仍然。我应该总是重新检查DataContext是否为我的VM(如果可以通过从墓碑或类似的东西重新激活来更改它),或者它足以存储一次?

var vm = DataContext as MyViewModel;
if (vm == null) return;
vm.DoSomething();

通过Mvvm Light Locator

设置DataContext
DataContext="{Binding MyViewModel, Mode=OneWay, Source={StaticResource ViewModelLocator}}"

2 个答案:

答案 0 :(得分:0)

我有时使用它,就像那样:

private MyViewModel viewModel;

何时加载页面,然后为该字段添加值

viewModel = (MyViewModel)DataContext;

我可以随时随地使用它。

我知道它不是MVVM,但仍然;)

答案 1 :(得分:0)

当它仅限于页面时,它总是安全的。无论是在构造函数,Loaded事件处理程序还是OnNavigatedTo中,您都可以创建对象而不再检查它们 - 页面是用所有对象保存在内存中的,还是构造函数Loaded和OnNavigatedTo在从逻辑删除重新激活后再次调用。墓碑问题主要发生在 one page 依赖于事实的情况下,其他页面创建了一些东西。

相关问题