MVVMLight--将参数传递给ViewModel构造函数?

时间:2010-12-22 03:26:36

标签: wpf dependency-injection mvvm-light

假设我有一个ListBox绑定到Foo个对象的集合,并且选定的Foo显示在contentcontrol中,内容模板为FooView

有没有办法可以让FooView通过FooFooViewModel传递给ViewModelLocator的构造函数,即{{1}}的datacontext?

2 个答案:

答案 0 :(得分: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 :(得分:1)

我听说虽然Visual Studio中的工具不支持它,但XML规范允许您在构造函数中使用参数实例化类。我从来没有这样做过,但是听说这可以在.Net Rocks播客上播出。也可能只与WPF相关而不是Silverlight,因为WPF具有比Silverlight更多的功能。没什么帮助,但可能会让你走上正轨。