5

在我的 WPF (4.0) 应用程序中,我使用的是Viewmodel-first模式。因此,首先创建我的视图模型,然后是视图 - 使用数据模板。可以在此处找到工作演示。

现在,从创建的视图(代码隐藏)中,我需要修改视图模型的属性。在一种View-first方法中,我只需访问一个命名的视图模型实例。但是,该Viewmodel-first方法不允许这样做。有一个视图模型,但视图并不关心它是什么。

坏的:

当然,您可以掌握DataContext并使用它,但这有效地将视图和视图模型耦合在一起。

private void MyView_Loaded(object sender, RoutedEventArgs e)
{
    this.viewModel = DataContext as MyViewModel;
}

为此必须有一个推荐的模式。命令?消息?请帮忙!

问:如何修改(设置属性)活动视图模型?

4

2 回答 2

4

使用绑定将数据从 View 传递到 ViewModel,并使用命令来激活 ViewModel。

命令应该使用绑定来在 ViewModel 上执行命令。

消息应该用于 ViewModel 之间的通信。

.

于 2013-01-11T10:46:11.503 回答
3

你不能那样做。否则 View 将知道 View Model。

如果此初始化在所有视图模型中通用,则您可以在其中定义属性/事件ViewModelBase并从此类派生所有视图模型。

问:如何修改(设置属性)活动视图模型?

您需要使用EventAggregator模式进行 View-ViewModel 通信。

您可以使用自己喜欢的MVVM 框架,以及几乎所有框架支持EventAggregator(或MessageBusEnterprise Bus)。

于 2013-01-11T10:46:52.297 回答