MVVMLight Передаете параметр конструктору ViewModel?

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

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


person Justin    schedule 22.12.2010    source источник


Ответы (2)


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...
person Jake Berger    schedule 18.01.2011

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

person codeputer    schedule 26.01.2011