Внедрение конструктора Silverlight в модель представления + режим проектирования

Я пытаюсь разобраться с написанием тестируемых ViewModels в Silverlight 4. В настоящее время я использую MVVM light.

Я использую AutoFac, и IoCContainer отлично справляется со своей задачей. Однако для внедрения в конструктор ViewModels, которые привязаны к представлениям, у меня есть эта цепочка конструкторов:

    public UserViewModel() : this(IoCContainer.Resolve<IUserServiceAsync>())
    {

    }

    public UserViewModel(IUserServiceAsync userService) 
    {
        if (this.IsInDesignMode) return;

        _userService = userService;
    }

Что не кажется чистым, но это лучший вариант, который я нашел до сих пор. Это работает, и мое приложение работает так, как нужно, и тестируется с инвертированным управлением.

Однако моя виртуальная машина привязана к моему представлению следующим образом:

 <UserControl.DataContext>
            <ViewModel:UserViewModel />
 </UserControl.DataContext>

В моих атрибутах страницы XAML режим разработки как в VS2010, так и в Blend не работает.

Есть ли лучший способ добиться того, что я пытаюсь сделать в Silverlight, который все еще работает в режиме разработки? Потеря режима разработки не является преградой для сделки, но будет полезна при изучении XAML. Хотя было бы неплохо сделать более чистый путь без цепей!

Я думаю, что, возможно, можно использовать AutoFac / IoC для преобразования моделей представления в представления, в отличие от подхода разметки XAML, описанного выше, и пойти по этому пути?

Спасибо.

10
задан Jammin 27 October 2010 в 13:22
поделиться