您好我目前使用WPF的模型/视图模式和国际奥委会,但我有一个问题,我目前有3视图,其中只有两个将需要创建,在运行时确定。WPF MVVM与IUnityContainer创建不需要的多个实例
在每个视图我使用的XAML以提供用于视图中的对象,像这样:
ViewA
<viewmodel:modelA x:Key="viewModel"/>
或
ViewB
<viewmodel:modelB x:Key="viewModel"/>
... etc
点此外,这些看法和他们的后续机型有这样一个层次结构:
class modelA { public virtual ConfigA {get; set;} }
class modelB : modelA { public override ConfigB {get; set;} }
class modelC : modelB { public override ConfigC {get; set;} }
class ConfigA { public int Test { get; set;} }
class ConfigB : ConfigA { public int TestA { get; set;} }
class ConfigC : ConfigC { public int TestB { get; set;} }
现在国际奥委会我创造我的容器和注册所需的模型(modelB或modelC)的一个实例。当试图通过container.resolve实例化所需的视图时,ViewA + ViewB或ViewA + ViewC。
我得到了模型的多个实例。
当我只想要创建一个类型,无论是modelB或modelC。
switch (Object)
{
case 1:
modelB b = new modelB();
Container.RegisterInstance<modelB>(b, new ContainerControlledLifetimeManager());
RegionManager.Regions[RegionNames.MainRegion].Add(Container.Resolve<ViewB>());
break;
case 1:
modelC c = new modelC();
Container.RegisterInstance<modelC>(c, new ContainerControlledLifetimeManager());
RegionManager.Regions[RegionNames.MainRegion].Add(Container.Resolve<ViewC>());
break;
}
RegionManager.Regions[RegionNames.MainRegion].Add(Container.Resolve<ViewA>());
的意见解决是产生更多的模型时,我要的是使用该模型的已建成实例,并注入到浏览此容器。任何人都可以帮助或点我在正确的方向,
感谢,
嘿斯科特多数民众赞成在类似于我所做的,我会在下面解释,谢谢。 – somin 2012-08-06 12:07:32