您好我目前使用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