Когда в WPF вызывается конструктор для объекта View (шаблон MVVM)? - PullRequest
2 голосов
/ 27 июля 2011

В примере приложения, найденного в следующей статье:

http://msdn.microsoft.com/en-us/magazine/dd419663.aspx

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

Два вопроса:

  1. В чем причина этого?
  2. Где можно разместить код, который я хочу выполнять при каждом создании нового CustomerView?

Ответы [ 2 ]

2 голосов
/ 27 июля 2011

Создан только один CustomerView. Когда вы изменяете CustomerViewModel, он не создает новый CustomerView, он повторно использует существующий.

1 голос
/ 27 июля 2011

причина того, что представление создается только один раз, заключается в том, что он находится в TabControl / HeaderedContentControl.

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

 <ListBox ItemsSource="{Binding Path=Workspaces}">
 </ListBox>

вместо

 <HeaderedContentControl 
      Content="{Binding Path=Workspaces}"
      ContentTemplate="{StaticResource WorkspacesTemplate}"
      Header="Workspaces"
      Style="{StaticResource MainHCCStyle}"
      />

РЕДАКТИРОВАТЬ:

Где я могу разместить код, который я хочу выполнять каждый раз, когда новый CustomerViewсоздал?

Если вы используете DataTemplates, вы никогда не создадите новое представление самостоятельно.вы просто создаете новую ВМ / объект, который затем отображается как DataTemplate.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...