2010-12-22 100 views
4

假設我有一個列表框綁定到Foo對象的集合,並且所選的Foo顯示在contentcontrol中,其內容模板爲FooViewMVVMLight--將參數傳遞給ViewModel構造函數?

有沒有一種方法,我可以讓這個在FooView將選擇的FooFooViewModel的構造是它的datacontext通過ViewModelLocator

回答

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

我聽說,雖然在Visual Studio中的工具不支持它,XML規範也允許你實例化一個類的構造函數的參數。我從來沒有這樣做過,但聽說在.Net Rocks播客中這是可能的。也可能僅與WPF相關,而不是Silverlight,因爲WPF比Silverlight具有更多功能。沒有太多的幫助,但可能會讓你走上正軌。

相關問題