2010-09-10 11 views
5

w jaki sposób można utworzyć datATablicę UserControl z ViewModel z konstruktorem NON-Empty?DataTemplate a ViewModel z niepokrytym konstruktorem?

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

Wiązanie tego w Xaml spowoduje awarię, ponieważ Ctor nie jest pusty. Ale kiedy używam relacji rodzic/dziecko z ViewModels, muszę przekazać obiekt osoby do konstruktora ViewModel ...

Jak sobie poradzisz z tą sytuacją?

+1

Twoje ViewModels mogą mieć dowolne konstrukcje, które lubisz. Jest to widok (na przykład twój UserControl), który powinien mieć domyślny konstruktor. Z twoim kodem musi być coś jeszcze nie tak. Co powiesz na opublikowanie bardziej kompletnego przykładu (który nie obejmuje widoku + XAML) – bitbonk

Odpowiedz

1
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 }; 

Jeśli naprawdę chcesz instancję widoku model w XAML, następnie trzeba narażać właściwość public Person Person i trzymać się z konstruktora bez parametrów. Po prostu wykonaj w setera Person, co zrobiłbyś w konstruktorze. Oczywiście, teraz otworzyłeś puszkę z robakami, ponieważ będziesz musiał również utworzyć instancję Person w XAML z konstruktorem bez parametrów, a wkrótce wszystko stanie się bardzo brzydkie ...

+0

, jak mówisz, brzydka ... brak rozwiązania w zasięgu wzroku:/ – Elisabeth

+0

@Lisa Czy mogę zapytać, dlaczego chcesz utworzyć instancję modelu widoku z XAML? To właśnie sprawia, że ​​wszystko jest nieładne. – Jay

+4

ponieważ jest to przydatne: ................................ Elisabeth

Powiązane problemy