在我的WPF(4.0)应用程序中,我使用Viewmodel-first
模式。因此,首先创建我的视图模型,然后使用数据模板创建视图。可以找到工作演示here。
现在,从创建的视图(代码隐藏)中,我需要修改viewmodel的属性。在View-first
方法中,我只需访问一个命名的viewmodel实例。但是,Viewmodel-first
方法不允许这样做。有一个视图模型,但视图并不关心它是什么。
当然,您可以抓住DataContext
并使用它,但这有效地结合了视图和t
viewmodel。
private void MyView_Loaded(object sender, RoutedEventArgs e)
{
this.viewModel = DataContext as MyViewModel;
}
必须有一个推荐的模式。命令?消息?请帮忙!
问:如何修改(设置属性)活动视图模型?
答案 0 :(得分:4)
使用Bindings将数据从View传递到ViewModel,并使用命令激活ViewModel。
命令应该使用绑定到ViewModel上的执行命令。
应使用消息在ViewModel之间进行通信。
答案 1 :(得分:3)
你做不到。否则View将了解View Model。
如果此初始化在所有视图模型中都是通用的,那么您可以在ViewModelBase
中定义属性/事件,并从此类派生所有视图模型。
问:如何修改(设置属性)活动视图模型?
您需要使用EventAggregator模式进行View-ViewModel通信。
您可以使用自己喜欢的MVVM framework和几乎所有框架支持EventAggregator
(或MessageBus
或Enterprise Bus
)。