根据MVVM中的属性,不同的输入形式

时间:2014-03-11 12:42:40

标签: c# wpf entity-framework mvvm

所以我有一个WPF MVVM应用程序(作为一个例子)在不同类型的sql表中存储不同类型的客户。

EntityFramework数据库中有一个基本类型Customer,其中包含一个名为Type的列。

根据Customer.Type,用户应该能够输入不同类型的信息。

所以Customer.Type可以存储 Customer1 Customer2 等等......根据这种类型,信息存储在另一个数据库表中。

客户群信息(名称,邮政地址)始终属于Customers表,而如果客户的类型为 Customer1 ,则WPF UI应显示另外一个公开控件的UserControl填写表Customer1的信息。

WPF MVVM中是否有一种干净的方法来执行此操作?

1 个答案:

答案 0 :(得分:2)

是的,你可以使用数据模板,比如我将在WPF DataTemplate Binding depending on the type of a property解释或阅读类似的方法

您可以为每个Type实现不同的ViewModel和Views,即 Customer1ViewModel - Customer1View,Customer2ViewModel - Customer2View ...

然后,根据您的类型,为该类型创建适当的ViewModel。

在要输入数据的UI中添加数据模板:

<UserControl>
    <UserControl.Resources>
          <DataTemplate DataType="{x:Type viewmodels:Customer1ViewModel}">
                    <views:Customer1View/>
                </DataTemplate>

           <DataTemplate DataType="{x:Type viewmodels:Customer2ViewModel}">
                    <views:Customer2View/>
                </DataTemplate>

    </UserControl.Resources>
    <Grid>
        <!--Main content-->
        <ContentControl Content="{Binding CustomerViewModel}"/>
    </Grid>

</UserControl>

因此,如果绑定属性CustomerViewModel中的实例是Customer1ViewModel,那么它将显示Customer1View用户控件。