2010-11-26 3 views
5

Я новичок в модели дизайна .net и MVVM. Я застрял сейчас, потому что в файле codebehind одного из моих представлений мне нужно получить соответствующую модель как объект. Как здесь отношения? Возможно ли, и это «правильный способ сделать это»?Модель доступа MVVM от просмотра

ответ

5

View должен получить доступ к ViewModel, который обертывает модель, скрывая ее от представления. Если вам нужно получить доступ к свойствам Модели из представления, получите ViewModel, чтобы выставить их как свойства, к которым может привязываться представление.

+0

Хорошо, я понял, что ответ был чем-то вроде этого. Но у меня все еще есть проблемы. Когда я нажимаю на вид 1 типа A, я хочу, чтобы он сохранил соответствующую модель в модели viewmodel. когда я нажимаю на вид 2 типа A, я также хочу, чтобы он сохранил свою соответствующую модель в той же модели viewmodel. до сих пор я знаю только, как сохранить себя (вид), а не модель:/ – Andreas 2010-11-26 17:37:39

1

ViewModel не должен иметь абсолютно никакого представления о представлении. View должен использовать DataBinding только так, чтобы не знать модель или ViewModel.

Если вам нужно взаимодействовать с видом, все это должно быть через DataBinding. Только в исключительных случаях вам следует прибегнуть к кодовомузади.

Так есть собственности на ViewModel и связывает него с точкой зрения.

+0

Он хочет получить доступ к Модели из представления, а не наоборот. – 2010-11-26 17:03:53

0
public partial class MyView : Window 
{ 
    private MyViewModel aModel; 

    public MyView() 
    { 
     InitializeComponent(); 
     aModel = new MyViewModel(); 
     this.DataContext = aModel(); 
} 

Теперь представление изменит данные привязки к элементам управления, которые привязаны к общедоступным свойствам ViewModel.

1

MVVM не запрещает View напрямую обращаться к Модели. Это общее недоразумение в сообществе MVVM.

В вашей модели ViewModel может отображаться базовая модель, чтобы представление могло напрямую обращаться к модели.

Переплет:

{Binding Model.Title} 

Код За:

((MyViewModel)DataContext).Title 

ViewModel (EmailClient) образец применения WPF Application Framework (WAF) показывает, как получить доступ к модели из вида.

Смежные вопросы