【问题标题】:wpf viewmodel first approach - multiple instances of same usercontrol in same viewwpf viewmodel第一种方法-同一视图中同一用户控件的多个实例
【发布时间】:2010-10-21 20:31:08
【问题描述】:

我们正在为 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吗???

【问题讨论】:

    标签: wpf mvvm


    【解决方案1】:

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

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

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

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

    编辑:

    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 实例,模板将负责创建视图。

    【讨论】:

    • in tat case....你有 diff 用户控件实例的 diff view-models 实例吗???
    猜你喜欢
    • 2020-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-31
    • 1970-01-01
    • 2020-05-19
    • 2020-07-02
    相关资源
    最近更新 更多