代码之家  ›  专栏  ›  技术社区  ›  Tim Murphy

如何在不破坏WPF视图的情况下重构模型?

  •  1
  • Tim Murphy  · 技术社区  · 16 年前

    我刚刚开始学习WPF,并且喜欢它提供的数据绑定功能;这对于一个noob来说忽略了复杂性和混乱。

    我关心的是如何在不破坏使用模型的视图的情况下安全地重构模型/视图模型?

    以视图的以下片段为例:

    <Grid>
        <ListView ItemsSource="{Binding Contacts}">
            <ListView.View>
                <GridView>
                    <GridViewColumn Header="First Name" DisplayMemberBinding="{Binding Path=FirstName}"/>
                    <GridViewColumn Header="Last Name" DisplayMemberBinding="{Binding Path=FirstName}"/>
                    <GridViewColumn Header="DOB" DisplayMemberBinding="{Binding Path=DateOfBirth}"/>
                    <GridViewColumn Header="# Pets" DisplayMemberBinding="{Binding Path=NumberOfPets}"/>
                    <GridViewColumn Header="Male" DisplayMemberBinding="{Binding Path=IsMale}"/>
                </GridView>
    
            </ListView.View>
        </ListView>
    </Grid>
    

    列表绑定到Windows数据源的联系人属性ilist(联系人的ilist),联系人的每个属性都绑定到GridView列。

    现在,如果我将联系人模型中的NumberOfPets属性的名称更改为PetCount,视图将中断。如何防止视图被破坏?

    2 回复  |  直到 16 年前
        1
  •  1
  •   Turkster    16 年前

    不幸的是,这是WPF中的一个已知问题,在重构绑定背后的实体时不考虑XAML。我一直在使用第三方重构工具(如resharper或coderush)来解决这个问题,它们比Visual Studio中内置的重构功能处理得更好。

        2
  •  0
  •   Michal Ciechan    16 年前

    如果您真的不想更改视图(无论出于什么原因),可以将NumberOfpets属性保留在原始ViewModel中,并将其getter设置为重构的ViewModel的PetCount属性,这样就不会破坏视图。

    推荐文章