我有一个业务对象,比如说customer,它有太多的字段要显示在一个页面中,所以我将它分成不同的选项卡页。数据不能将其分割成有意义的位(如地址、状态、街道名称等),因此我决定保留相同的模型和视图模型,并具有不同的视图(每个选项卡页内容是不同的视图)绑定到同一个视图模型。
首先,这是正确的做法吗?
其次,如果是的话,如何使用统一将相同的视图模型传递给子视图?目前我使用构造函数注入,但它们是视图模型的新实例。
干杯,
阿里
发布于 2009-05-12 06:50:08
如果您使用的是棱镜,那么您可以使用RegionContext。
为RegionContext指定TabControl:
<TabControl cal:RegionManager.RegionName="MyTabControl"
cal:RegionManager.RegionContext="{Binding Path=ViewModel}">并使用RegionContext上的静态RegionContext方法从添加到该区域的视图访问它:
void ViewConstructor()
{
this.ViewModel = (MyViewModel)RegionContext.GetObservableContext(this).Value;
}如果不使用Prism,则可以将ViewModel注册为命名实例:
Container.RegisterInstance<IMyViewModel>("viewModelName", new MyViewModel());稍后使用以下方法获取:
Container.Resolve<IMyViewModel>("viewModelName");https://stackoverflow.com/questions/850691
复制相似问题