wpf viewmodel first approach - 同一视图中同一usercontrol的多个实例

时间:2010-10-21 20:31:09

标签: wpf mvvm

对于wpf应用程序,我们正在采用mvvm方法。

我们遵循视图模型方法。我的意思是我们创建视图模型并使用

映射它们
 <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 :(得分:0)

我认为MVVM模式是一个宽松的指南。

理想情况下,您正在寻找的是一个可测试的应用程序。 UI中的任何代码都难以测试。

如果这适用于你的情况,那就去做吧,但要记住可测试性。

在我正在处理的应用程序中,我有一个ItemsControl,其中包含6个相同UserControl和ViewModel的实例。

编辑:

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>

或者你可以把它放在你的资源中:

          

因此,实际上,您所要做的就是在DataContext中创建新的ViewModel实例,模板将负责View创建。