Я пытаюсь разобраться с написанием тестируемых 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, описанного выше, и пойти по этому пути?
Спасибо.