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

时间:2010-05-20 08:18:47

标签: .net wpf

我刚刚开始学习WPF并且喜欢它呈现的数据绑定的力量;这忽视了菜鸟的复杂性和混乱。

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

以下面的视图片段为例:

<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 DataSource的Contacts属性IList(Of Contact),并且Contact的每个属性都绑定到GridViewColumn。

现在,如果我将Contact模型中NumberOfPets属性的名称更改为PetCount,视图将会中断。如何防止视图中断?

2 个答案:

答案 0 :(得分:1)

不幸的是,这是WPF中的一个已知问题,当您重构绑定背后的实体时,不会考虑xaml。我一直在使用resharper或coderush等第三方重构工具来解决这个问题,他们倾向于比Visual Studio中内置的重构函数更好地处理它。

答案 1 :(得分:0)

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