2010-12-22 10 views
4

Angenommen, ich habe eine ListBox, die an eine Sammlung von Foo Objekten gebunden ist, und die ausgewählte Foo wird in einer Inhaltssteuerung angezeigt, wobei die Inhaltsvorlage eine FooView ist.MVVMLight-- Übergeben eines Parameters an einen ViewModel-Konstruktor?

Gibt es eine Möglichkeit, dass ich so machen kann, dass die FooView übergibt den ausgewählten Foo an den Konstruktor des FooViewModel die Datacontext über die ViewModelLocator es ist?

Antwort

3

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

Mainview

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

Ich habe gehört, dass, obwohl das Werkzeug in Visual Studio nicht unterstützt wird, die XML-Spezifikation Sie erlaubt eine Klasse mit einem Parameter im Konstruktor instanziieren . Ich habe es noch nie gemacht, aber gehört, dass dies im .Net Rocks Podcast möglich war. Kann im Gegensatz zu Silverlight auch nur für WPF relevant sein, da WPF mehr Funktionen als Silverlight bietet. Nicht viel Hilfe, aber kann dich auf den richtigen Weg bringen.

Verwandte Themen