Ваше решение в порядке, у меня есть только 2 примечания: Первое: если ваш каталог содержит более 1 типа IHelloViewModel (это, скорее всего, потому что у вас есть несколько представлений и моделей представления соответственно), тогда вы получите ошибку композиции, потому что импорт возвращает большечем один результат.
[Import]public IHelloViewModel ViewModel
должно быть что-то вроде
[Import(typeof(HelloViewModel))] IHelloViewModel ViewModel
или вы просто создаете свою собственность как:
[Import]
public HelloViewModel ViewModel
Второе: не используйте ServiceLocator
для созданиявашего HomeView
.ServiceLocator
предназначен для создания одноэлементных экземпляров, а EventAggregator
является идеальным кандидатом для этого.Представления не должны быть общими (и вы правильно пометили его как [PartCreationPolicy(CreationPolicy.NonShared)]
- в противном случае, если вы хотите добавить свое представление в другой регион, вы получите ошибку.))
use
[Import]
public HomeView HomeView
Hopeэто помогает.