嗨,我目前正在使用带有模型/视图模式和 IOC 的 WPF,但是我遇到了一个问题,我目前有 3 个视图,其中只需要创建两个,在运行时确定。
在每个视图中,我使用 xaml 为视图提供对象,如下所示:
视图A
<viewmodel:modelA x:Key="viewModel"/>
或者
视图B
<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;} }
现在使用 IOC,我正在创建容器并注册所需模型的实例(模型 B 或模型 C)。当尝试通过 container.resolve 实例化所需的视图时,ViewA + ViewB 或 ViewA + ViewC。
我得到了模型的多个实例化。
当我只想创建 1 种类型时,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>());
当我想要的是容器使用已构建的模型实例并将其注入视图时,视图的解析正在生成更多模型。任何人都可以帮助或指出我正确的方向,
谢谢,