GetView()vs ViewModel中的属性

时间:2014-05-12 18:36:32

标签: c# wpf mvvm caliburn.micro

当某个事件(SelectedIndex)发生时,我当前需要设置我的TabControl的IEventAggregator属性,并考虑我是如何实现的。< / p>

我提出了两种可能性:

  • 使用GetView()提供的ViewAware来访问我的TabControl并将SelectedIndex设置为我的值
  • 在我关联的ViewModel中使用属性,并通过XAML将此属性绑定到我的TabControl的SelectedIndex属性

这两个选项都运行正常,但我个人希望回答这个问题,因为这不是我第一次想知道哪里在这种情况下实现功能。

我知道第一个选项不会启用Notify支持但除此之外:什么是正确的方法?

1 个答案:

答案 0 :(得分:0)

使用GetView()方法直接从viewmodel操作视图会完全破坏MVVM。您也可以将所有逻辑放在代码隐藏中。 MVVM的重点是抽象出实际视图,使其与逻辑分离,并且应用程序可以进行单元测试。

如果您将来改变对标签的看法并决定以其他方式显示多个视图,该怎么办?您现在必须开始编辑您的viewmodel以编辑新视图,而不是仅仅调整一些XAML。

对于单元测试,你将无法模拟你的TabControl。