MVVMLight-- Передача параметра в конструктор ViewModel? - PullRequest
4 голосов
/ 22 декабря 2010

Предположим, у меня есть ListBox, который связан с коллекцией Foo объектов, и выбранный Foo отображается в контенте управления содержимым с шаблоном содержимого FooView.

Есть ли способ, которым я могу сделать так, чтобы FooView передавал выбранный Foo в конструктор FooViewModel, который является его datacontext через ViewModelLocator?

Ответы [ 2 ]

3 голосов
/ 18 января 2011

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 голос
/ 26 января 2011

Я слышал, что, хотя инструментальные средства в Visual Studio не поддерживают его, спецификация XML позволяет создавать экземпляр класса с параметром в конструкторе.Я никогда не делал этого, но слышал, что это возможно на подкасте .Net Rocks.Может также относиться только к WPF, а не к Silverlight, так как WPF имеет больше возможностей, чем Silverlight.Не очень помогает, но может поставить вас на правильный путь.

...