странное поведение RaisePropertyChanged - PullRequest
0 голосов
/ 04 января 2011

У меня вопрос по поводу MVVM для WP7. В моем приложении у меня есть вид даты или календарь, если хотите. Поэтому, выбрав день, можно отредактировать информацию об этом дне, нажав на нее и перейдя на другую страницу.

Проблема в том, что, когда я изменяю некоторую информацию и нажимаю кнопку «Назад», измененная информация не обновляется в привязках соответствующего формата. Вот почему в событии navigatedto я вызываю публичный метод из моей виртуальной машины для этой страницы. Единственная цель этого метода (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;
    }

Мое решение, как вы видите, далеко не элегантно. Что происходит IMO, так это то, что если я просто вызову RaisePropertyChanged, он не будет распространяться, потому что это та же самая переменная, и только одно из ее свойств изменилось. Было бы прекрасно, если бы кто-то мог объяснить, что происходит.

1 Ответ

0 голосов
/ 05 января 2011

«Проблема в том, что когда я изменяю некоторую информацию и нажимаю кнопку« назад », измененная информация не обновляется в привязках« соответствующего ».

Это означает для меня, что информация, которая предположительно была изменена, не была фактически изменена Это также объясняет, почему ваш RefreshSelectedDay тоже не работает.

Вы изменяете свойства в SelectedDay или создаете новый экземпляр, и это не устанавливается?

если вы изменяете свойства в SelectedDay, этот класс правильно запускает уведомления об изменении свойств?

Дополнительный код также поможет нам в отладке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...