wpf viewmodel первый подход - несколько экземпляров одного и того же usercontrol в одном представлении - PullRequest
1 голос
/ 22 октября 2010

Мы придерживаемся подхода mvvm для приложения wpf.

Мы придерживаемся подхода модели представления. Я имею в виду, что мы создаем модели представления и отображаем их, используя

 <DataTemplate DataType="{x:Type vm:CityViewModel}">
        <vw:Cities/>
    </DataTemplate>

В этом городе - вид .. У меня есть пользовательский элемент управления ... который я использую несколько раз ...

<view:UserControl1 Grid.Row="2" DataContext="{Binding UcViewModel}" Margin="291,5,291,-5"></view:UserControl1>
<view:UserControl1 Grid.Row="3" DataContext="{Binding Uc2ViewModel}" ></view:UserControl1>

Мы создаем несколько экземпляров модели представления пользовательского элемента управления внутри CityViewmodel.

Соответствует ли этот подход mvvm ???

1 Ответ

0 голосов
/ 22 октября 2010

Я бы посчитал шаблон MVVM свободным руководством.

В идеале вы ищете тестируемое приложение. Любой код в пользовательском интерфейсе сложнее протестировать.

Если это работает в ваших обстоятельствах, тогда сделайте это, но помните о проверяемости.

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

Edit:

public class InsuranceViewModel 
{
  public ObservableCollection<UnderwritingViewModel> Underwriting { get; set; }
}

По моему мнению:

<ItemsControl ItemsSource="{Binding Path=Underwriting}">
  <ItemsControl.ItemTemplate>
    <DataTemplate>
      <!-- this could be another UserControl -->
      <views:UWView DataContext="{Binding}" />

      <!-- or a full data template defined in this view -->
    </DataTemplate>
  </ItemsControl.ItemTemplate>
</ItemsControl>

Или вы можете поместить это в свои ресурсы:

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

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