Поместите репозиторий google () в самую первую строку зависимостей. Это будет работать.
Шон сначала написал хороший пост на View или ViewModel . Наличие виртуальной машины в XAML дает вам возможность смешивания (просмотр образцов данных в Blend), что неплохо, но цена должна вернуть информацию в представление. По этой причине Джон Папа отошел от этого подхода.
Я использую идею брака Шона (см. Ссылку выше).
HTH -Эрик
Как здесь, Я бы пошел с XAML. Есть и другие способы установить свойство DataContext. Если вам интересно, посмотрите на платформу Microsoft CAG для WPF.
Я установил виртуальную машину в коде, потому что это значительно упрощает тестирование представления. У Джастина Энджела есть отличный пост для этого:
public partial class Page : UserControl
{
private PageViewModel _viewModel = new PageViewModel();
public PageViewModel ViewModel
{
get { return _viewModel; }
set { _viewModel = value; }
}
public Page()
{
InitializeComponent();
this.Loaded += new RoutedEventHandler(Page_Loaded);
}
void Page_Loaded(object sender, RoutedEventArgs e)
{
this.DataContext = ViewModel;
}
}
Я нашел его сообщение очень полезным для изучения тонкостей тестирования, окружающего шаблон MVVM.
Я использую класс, который дублировал «Экран», который обрабатывает триаду MVVM. Я начал с внедрения V в виртуальную машину, затем с виртуальной машины в качестве ресурса в V, но в конце концов концепция экрана сработала для меня лучше всего. Это позволяет мне использовать V и VM без привязки друг к другу. Он также абстрагирует другие функции в моей общей структуре представления. Вот конструктор для моего класса Screen в качестве примера:
public CatalogItemScreen(IUnityContainer container) : base(container)
{
this.ViewModel = Container.Resolve<ICatalogItemViewModel>();
this.View = Container.Resolve<CatalogItemView>();
this.View.DataContext = this.ViewModel;
}
Обратите внимание, что виртуальная машина создается на экране, здесь создается буква V, а две привязаны друг к другу. В этом примере используются Unity и Prism, но для этого нет необходимости.