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

.net 如何在不破坏WPF视图的情况下重构模型?,.net,wpf,.net,Wpf,我刚刚开始学习WPF,并且喜欢它所呈现的数据绑定功能;这就忽略了noob的复杂性和混乱 我关心的是如何安全地重构模型/视图模型,而不破坏使用它们的视图 以以下视图片段为例: <Grid> <ListView ItemsSource="{Binding Contacts}"> <ListView.View> <GridView> <GridViewColumn He

我刚刚开始学习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数据源的Contacts属性IList(Of Contact),联系人的每个属性都绑定到GridViewColumn


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

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

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

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

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

并不是我不想更改视图。它必须手动执行/在视图中查找所有实例。如果是单向绑定,您可以轻松实现此解决方案,尽管它不是最简单的解决方案。虽然重新分解工具听起来使用起来更好,但我不能评论它有多有用,因为我还没有使用过。这并不是说我不想改变视图。它必须手动执行/在视图中查找所有实例。如果是单向绑定,您可以轻松实现此解决方案,尽管它不是最简单的解决方案。虽然重新分解工具听起来使用起来更好,但我不能评论它有多有用,因为我还没有使用过。