如何使用servicelocator wpf动态创建模型的多个实例

问题描述 投票:0回答:1

我在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);

c# wpf xamarin mvvm-light viewmodellocator
1个回答
0
投票

[也许将来在使用同一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);

© www.soinside.com 2019 - 2024. All rights reserved.