У меня есть вопрос относительно MVVM для WP7. В моем приложении у меня есть тип datepicker или календарь, если хотите. Поэтому, выбрав день, вы можете отредактировать информацию в этот день, просмотрев ее и перейдя на другую страницу.странное поведение RaisePropertyChanged
Проблема в том, что когда я меняю какую-либо информацию и нажимаю кнопку «Назад», информация, которая была изменена, не обновлялась в привязках correspongind. Вот почему на событие navigatedto я вызываю публичный метод из моей виртуальной машины для этой страницы. Единственная цель этого метода (RefreshSelectedDay) - вызвать RaisePropertyChanged, чтобы привязанные текстовые поля на странице получили новую информацию. Однако ничего не происходит. Информация - это свойства actaully свойства 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;
}
Мое решение, как вы можете видеть, далеко не изящно. Что происходит с IMO, так это то, что если я просто вызову RaisePropertyChanged, он не будет распространяться, потому что это одна и та же переменная, и только одно из его свойств изменилось. Было бы прекрасно, если кто-нибудь сможет объяснить, что происходит.
Вы используете рамки для MVVM? Если да, то какой? –
MVVM-Light для этого проекта. – Miro