DataTemplate ViewModel с не пустым конструктором? - PullRequest
5 голосов
/ 11 сентября 2010

как я могу датировать пользовательский элемент управления с помощью ViewModel с NON-пустым конструктором?

public PersonViewModel(Person person)
{
   _person= person;
    // do some stuff                          
}

При связывании этого в Xaml произойдет сбой, поскольку Ctor не пуст.Но поскольку я использую родительские / дочерние отношения с ViewModels, я должен передать объект person конструктору ViewModel ...

Как вы справляетесь с этой ситуацией?

1 Ответ

1 голос
/ 11 сентября 2010
 var person = new Person();
 var viewModel = new PersonViewModel(person);

 var view = new EditPersonView(viewModel); // use overloaded constructor to inject DataContext
 // OR
 var view = new EditPersonView{ DataContext = viewModel };

Если вы действительно хотите создать модель представления в XAML, тогда вам нужно предоставить свойство public Person Person и придерживаться конструктора без параметров. Просто сделайте в установщике Person то, что вы сделали бы в конструкторе. Конечно, теперь вы открыли банку с червями, потому что вам также нужно создать экземпляр Person в XAML с помощью конструктора без параметров, и вскоре все станет очень уродливо

...