2010-12-22 224 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具有更多功能。没有太多的帮助,但可能会让你走上正轨。

相关问题