【发布时间】:2011-08-09 17:23:07
【问题描述】:
我有一个使用 MVVM 的 WPF 应用程序;当我在我的主窗口 ViewModel 类中更改 ViewModel 时,新的用户控件不会显示在窗口中......原来的那个仍然存在。 ViewModel 如下所示:
public class MainWindowViewModel : ViewModelBase
{
public ViewModelBase Workspace;
public MainWindowViewModel()
{
var w = new CustomerDetailsViewModel();
SetActiveWorkspace(w);
}
void NavigationService_ViewChanged(object sender, ViewChangedEventArgs e)
{
SetActiveWorkspace(e.View);
}
void SetActiveWorkspace(ViewModelBase workspace)
{
Workspace = workspace;
}
}
我的 XAML 如下所示:
< ContentControl Content="{Binding Path=Workspaces}" >
正在触发导航服务 ViewChanged 事件,并且正在使用参数中的正确视图调用 SetActiveWorkspace 方法。但是,在那之后,视图不会重新加载。我在这里错过了什么?
【问题讨论】:
-
您是否将视图的 DataContext 属性更新为新的 VM?
-
不,我不是,但我认为我不需要……我为什么要这样做?
-
您声明要更换虚拟机。视图的 DataContext 是 VM,所有绑定都与 DataContext 相关。视图需要有正确的 VM 作为 DataContext。
标签: wpf mvvm binding view viewmodel