我在mainwindow.cs中有一个tabcontrol。我想动态添加新选项卡,并且每个选项卡都有其自己独特的viewmodel实例。我设法做到了一个选项卡。但是,当我创建第二个模型时,它具有相同的模型实例。我正在使用viewmodelLocator。这是我在ViewModelLocator中的代码:
for (int i = 0; i <= 2; i++)
{
locatorProvider.Register<IXmlParser>(() => new XmlParser(), key);
locatorProvider.Register<IFileHandler>(() => new FileHandler(), key);
locatorProvider.Register<ISetHandler>(() => new SetHandler(), key);
locatorProvider.Register<RegisterViewModel>();
}
并且我尝试使用这段代码来检索它。
RegisterViewModel registerViewModel = SimpleIoc.Default.GetInstance(key);
[也许将来在使用同一ViewModel的多个实例时可能会对某人有所帮助。无论如何,这就是答案。因此,我像以前一样注册了接口,但是当我注册viewModel时,我通过了三个接口以及相应的键。
//助手类
locatorProvider.Register(()=> new XmlParser(),key);locatorProvider.Register(()=> new FileHandler(),key);locatorProvider.Register(()=>新的SetHandler(),密钥);
//注册视图模型
locatorProvider.Register(()=>新建>> RegisterViewModel(locatorProvider.GetInstance(key),locatorProvider.GetInstance(key),locatorProvider.GetInstance(key)),key);