Как создать несколько экземпляров модели динамически с помощью servicelocator wpf - PullRequest
0 голосов
/ 08 января 2020

У меня есть tabcontrol в mainwindow.cs. Я хочу динамически добавлять новую вкладку, и каждая вкладка имеет свой уникальный экземпляр 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 = SimpleIo c .Default.GetInstance (ключ);

1 Ответ

0 голосов
/ 24 января 2020

Возможно, это может помочь кому-то в будущем при работе с несколькими экземплярами одной и той же модели представления. В любом случае вот ответ. Таким образом, я регистрирую интерфейс, как я делал ранее, но когда я регистрирую viewModel, я передаю все три интерфейса с соответствующим ключом.

// Вспомогательные классы

locatorProvider.Register (() => new XmlParser (), key); locatorProvider.Register (() => new FileHandler (), key); locatorProvider.Register (() => new SetHandler (), key);

// Регистрация моделей представлений

locatorProvider.Register (() => new>> RegisterViewModel (locatorProvider.GetInstance (ключ), locatorProvider.GetInstance (ключ), locatorProvider.GetInstance (ключ)), ключ);

...