/ / MVVMLight - przekazujesz parametr do konstruktora ViewModel? - wpf, wstrzykiwanie zależności, mvvm-light

MVVMLight- Przekazywanie parametru do konstruktora ViewModel? - wpf, iniekcja zależności, mvvm-light

Załóżmy, że mam ListBox, który jest powiązany z kolekcją Foo obiekty i wybrane Foo jest wyświetlany w kontrolce treści, a szablon treści to FooView.

Czy istnieje sposób, że mogę to zrobić, aby FooView przechodzi wybrane Foo do konstruktora FooViewModel czyli jest to telegazeta za pośrednictwem ViewModelLocator?

Odpowiedzi:

3 dla odpowiedzi № 1

MainViewModel

/*INotifyPropertChanged property*/
public FooViewModel CurrentFooVM{
get{/*INPC code*/}
private set{/*INPC code*/}
}

/*INotifyPropertChanged property*/
public Foo SelectedFoo{
get{/*INPC code*/}
set{/*INPC code*/ CurrentFooVM = new FooViewModel(_selectedFoo)}
}

public ObservableCollection<Foo> Foos {get; private set;}

Główny widok

<ListBox ItemsSource={Binding Foos}
SelectedItem={Binding SelectedFoo}>...
<FooView... bind to CurrentFooVM...

1 dla odpowiedzi nr 2

Słyszałem, że chociaż oprzyrządowanie w VisualStudio nie obsługuje tego, specyfikacja XML pozwala na zaimplementowanie klasy za pomocą parametru w konstruktorze. Nigdy tego nie robiłem, ale słyszałem, że było to możliwe na podcastu .Net Rocks. Może dotyczyć tylko WPF w przeciwieństwie do Silverlight, ponieważ WPF ma więcej funkcji niż Silverlight. Niewiele pomocy, ale może dać ci dostęp do właściwa ścieżka.