Внедрение MVVM Light для WPF Unity. - PullRequest
       17

Внедрение MVVM Light для WPF Unity.

6 голосов
/ 16 февраля 2011

Я использую инструментарий MVVMLight для своего приложения WPF.Теперь я просматривал демонстрационный пример из MIX 10. от Лорен. Образец кода находится на SL и использует UnityContainer.Шаблон, предоставляемый инструментарием MVVMLight для WPF, не использует концепцию unitycontainer.Как я могу использовать UnityContainer в WPF.

Не знаю, если мой вопрос имеет смысл.Я не вижу никакой документации о том, как использовать ViewModelLocator.Может быть, кто-нибудь может предоставить пример или версию демо-версии WPF, которую Лорен использует в MIX

Ответы [ 2 ]

4 голосов
/ 22 февраля 2011

То, как я использую Unity в WPF (MVVM Light), выглядит следующим образом:

Я создаю класс загрузчика в корне приложения, что-то вроде:

public class Bootstrapper
{
    public IUnityContainer Container { get; set; }

    public Bootstrapper()
    {
        Container = new UnityContainer();

        ConfigureContainer();
    }

    private void ConfigureContainer()
    {
        Container.RegisterType<IMyRepo, MyRepo>();
        Container.RegisterType<MainViewModel>();
    }
}

Это мой загрузчик,Я также регистрирую ViewModels, потому что их легко создать в локаторе.

Затем я создаю вспомогательный модуль в конструкторе ViewModelLocator и разрешаю здесь каждую ViewModel, например:

public class ViewModelLocator
{
    private static Bootstrapper _bootStrapper;

    static ViewModelLocator()
    {
        if (_bootStrapper == null)
            _bootStrapper = new Bootstrapper();
    }

    public MainViewModel Main
    {
            get { return _bootStrapper.Container.Resolve<MainViewModel>(); }
    }
}

Как вывидите, мой ViewModelLocator прост, он просто создает загрузчик и разрешает ViewModel, и эти виртуальные машины также разрешают свои зависимости через контейнер:)

Может быть, есть лучший способ архивировать это, но этодействительно хорошее начало.

1 голос
/ 16 февраля 2011

Я бы посоветовал использовать Managed Extensibility Framework. Это в .NET 4, и я переключился с единства на MEF. Я отлично работаю, когда ваше приложение растет. Вы можете найти много информации об этом с помощью поиска с помощью Google. Удачи!

...