Mvvm 奇怪的RAISE属性改变的行为

Mvvm 奇怪的RAISE属性改变的行为,mvvm,windows-phone-7,Mvvm,Windows Phone 7,我有一个关于WP7的MVVM的问题。在我的应用程序中,如果你愿意,我有一种日期选择器或日历。因此,在选择了一天之后,你可以选择通过点击并进入另一页来编辑关于这一天的信息 问题是,当我更改一些信息并单击“上一步”按钮时,被更改的信息在相应的绑定中没有更新。这就是为什么在navigatedto事件中,我从我的VM中为该页面调用了一个公共方法。此方法(RefreshSelectedDay)的唯一目的是调用RaisePropertyChanged,以便页面上的绑定文本字段获得新信息。然而,什么也没有发生

我有一个关于WP7的MVVM的问题。在我的应用程序中,如果你愿意,我有一种日期选择器或日历。因此,在选择了一天之后,你可以选择通过点击并进入另一页来编辑关于这一天的信息


问题是,当我更改一些信息并单击“上一步”按钮时,被更改的信息在相应的绑定中没有更新。这就是为什么在navigatedto事件中,我从我的VM中为该页面调用了一个公共方法。此方法(RefreshSelectedDay)的唯一目的是调用RaisePropertyChanged,以便页面上的绑定文本字段获得新信息。然而,什么也没有发生。该信息实际上是SelectedDay属性的属性,它是MyDay类的实例

    protected override void OnNavigatedTo(NavigationEventArgs e)
    {
        ViewModel.ViewModelLocator.CalendarStatic.RefreshSelectedDay();  
    }

    /// <summary>
    /// I admit that this is by far the most stupid solution so far.
    /// RaisePropertyChanged won't work if you haven't really changed the property.
    /// That's why we set it to null and then turn it back.
    /// Used for updating the day when returning from
    /// the edit screen.
    /// </summary>
    public void RefreshSelectedDay()
    {            
        MyDay w = selectedDay;
        SelectedDay = null;
        SelectedDay = w;
    }
受保护的覆盖无效OnNavigatedTo(NavigationEventArgs e)
{
ViewModel.ViewModelLocator.CalendarStatic.RefreshSelectedDay();
}
/// 
///我承认这是迄今为止最愚蠢的解决方案。
///如果您没有真正更改属性,RaisePropertyChanged将不起作用。
///这就是为什么我们将其设置为null,然后将其返回。
///用于更新从中返回的日期
///编辑屏幕。
/// 
公共无效刷新选定日期()
{            
MyDay w=所选日期;
SelectedDay=null;
选择日期=w;
}
正如你所看到的,我的解决方案远非优雅。在我看来,如果我只是调用RaisePropertyChanged,它将不会传播,因为它是同一个变量,并且只是它的一个属性发生了更改。如果有人能解释发生了什么,那就太好了。

“问题是,当我更改某些信息并单击“上一步”按钮时,被更改的信息在相应的绑定中没有更新。”

这对我来说意味着那些被认为是被改变了的信息,实际上并没有被改变。这也解释了为什么你被重新选择了一天似乎也不起作用

您是在修改
SelectedDay
上的属性,还是创建一个新实例,但没有设置

如果您在
SelectedDay
上修改属性,该类是否正确触发属性更改通知


更多的代码也会帮助我们进行调试。

您是否使用MVVM框架?如果是的话,哪一个?我已经检查了好几次了,它被修改了。selectedDay变量中包含新信息。MyDay是我的应用程序中的一个模型,因此它的属性不会触发属性更改通知。但是,SelectedDay用作网格的datacontext,其中有一些文本块绑定到SelectedDay的属性。在这种情况下,RaisePropertyChanged应通知datacontext已更改,textblocks应重新绑定。