MVVMLight--如何向ViewModel构造函数传递参数?

4
假设我有一个ListBox,它绑定到一个 Foo 对象的集合,并且所选 Foo 在内容控件中显示,内容模板为 FooView 。是否有一种方法可以使 FooView 通过 ViewModelLocator 将所选的 Foo 传递给其数据上下文的 FooViewModel 构造函数?
2个回答

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

主视图

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

1

我听说虽然Visual Studio的工具不支持,但XML规范允许您在构造函数中使用参数实例化类。我从未尝试过,但在.Net Rocks播客中听说过这种可能性。这也可能只与WPF相关,而不是Silverlight,因为WPF比Silverlight具有更多功能。帮助不大,但可能会让您走上正确的轨道。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接