/ / MVVMLight - Passando um parâmetro para um construtor ViewModel? - wpf, injeção de dependência, mvvm-light

MVVMLight - Passando um parâmetro para um construtor ViewModel? - wpf, injeção de dependência, mvvm-light

Suponha que eu tenho um ListBox que está vinculado a uma coleção de Foo objetos, e os selecionados Foo é exibido em um contentcontrol com o modelo de conteúdo sendo um FooView.

Existe uma maneira que eu possa fazer para que o FooView passa o selecionado Foo para o construtor do FooViewModel qual é o datacontext através do ViewModelLocator?

Respostas:

3 para resposta № 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;}

Vista principal

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

1 para resposta № 2

Ouvi dizer que, embora o ferramental em VisualO Studio não suporta isso, a especificação XML permite que você instancie uma classe com um parâmetro no construtor. Eu nunca fiz isso, mas ouvi dizer que isso era possível no podcast .Net Rocks. Também pode ser relevante apenas para o WPF em vez do Silverlight, já que o WPF tem mais recursos que o Silverlight. Não é de muita ajuda, mas pode colocá-lo no caminho certo.