我对WP7的MVVM有疑问。在我的应用程序中,我有一种日期选择器或日历,如果你愿意的话。因此,在挑选一天之后,可以选择通过点击它并转到另一页来编辑关于这一天的信息。
问题在于,当我更改某些信息并单击后退按钮时,更改的信息未在correspongind绑定中更新。这就是为什么在navigatedto事件中我从我的VM调用该页面的公共方法。此方法(RefreshSelectedDay)的唯一目的是调用RaisePropertyChanged,以便页面上的绑定文本字段获取新信息。然而,没有任何反应。信息是SelectedDay属性的actaully属性whish是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;
}
我所能看到的解决方案远非优雅。 IMO会发生什么,如果我只是调用RaisePropertyChanged它将不会传播,因为它是同一个变量,只是其中一个属性发生了变化。如果有人能够解释发生的事情,那将是很可爱的。
答案 0 :(得分:0)
“问题在于,当我更改某些信息并单击后退按钮时,更改的信息未在correspongind绑定中更新。”
这对我来说意味着据说的信息被改变了,实际上并未改变。这也可以解释为什么你的RefreshSelectedDay似乎也不起作用。
您是在修改SelectedDay
上的属性,还是创建新实例,而且没有设置?
如果您要修改SelectedDay
上的属性,该类是否会正确触发属性更改通知?
更多代码也可以帮助我们调试。