如何使用unity将相同的viewmodel传递给子视图?

Ali*_*fai 2 silverlight prism unity-container

我有一个业务对象,比方说客户,它有太多的字段要显示在一个页面中,所以我将它拆分为不同的标签页.数据不是我可以将它分成有意义的位(如地址,状态,街道名称等),所以我决定保持相同的模型和视图模型,并有不同的视图(每个标签页的内容是一个不同的视图)绑定到相同的视图模型.

首先是这是正确的方法,为什么不呢?

其次,如果是,我如何使用unity 将相同的视图模型传递给子视图?目前我使用构造函数注入,但它们是视图模型的新实例.

干杯,

阿里

Jar*_*das 6

如果您正在使用Prism,那么您可以使用RegionContext.

为TabControl指定RegionContext:

<TabControl cal:RegionManager.RegionName="MyTabControl"
cal:RegionManager.RegionContext="{Binding Path=ViewModel}">
Run Code Online (Sandbox Code Playgroud)

并使用RegionContext上的静态GetObservableContext方法从添加到此区域的Views中访问它:

void ViewConstructor()
{
this.ViewModel = (MyViewModel)RegionContext.GetObservableContext(this).Value;
}
Run Code Online (Sandbox Code Playgroud)

如果您不使用Prism,则可以将ViewModel注册为命名实例:

Container.RegisterInstance<IMyViewModel>("viewModelName", new MyViewModel());
Run Code Online (Sandbox Code Playgroud)

并在以后使用:

Container.Resolve<IMyViewModel>("viewModelName");
Run Code Online (Sandbox Code Playgroud)