Ich habe eine Frage zu MVVM für WP7. In meiner Bewerbung habe ich eine Art von Datumsauswahl oder einen Kalender, wenn du willst. Nachdem Sie einen Tag ausgewählt haben, können Sie die Informationen zu diesem Tag bearbeiten, indem Sie darauf klicken und auf eine andere Seite gelangen.seltsam RaisePropertyChanged Verhalten
Das Problem ist, dass, wenn ich einige Informationen ändere und auf die Zurück-Schaltfläche klickte, die Information, die geändert wurde, in den Correspongind-Bindungen nicht aktualisiert wurde. Aus diesem Grund rufe ich auf dem navigatedto-Ereignis eine öffentliche Methode von meiner VM für diese Seite auf. Der einzige Zweck dieser Methode (RefreshSelectedDay) besteht darin, RaisePropertyChanged aufzurufen, damit die verknüpften Textfelder auf der Seite die neuen Informationen erhalten. Es passiert jedoch nichts. Die Info ist eine Eigenschaft der SelectedDay-Eigenschaft, die eine Instanz der MyDay-Klasse ist.
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;
}
Meine Lösung, wie Sie sehen können, ist weit davon entfernt, elegant zu sein. Was passiert IMO ist, dass, wenn ich nur die RaisePropertyChanged aufrufen wird es nicht propagieren, weil es die gleiche Variable ist und nur eine seiner Eigenschaften hat sich geändert. Es wäre schön, wenn jemand erklären könnte, was passiert.
Verwenden Sie ein Framework für MVVM? Wenn ja, welche? –
MVVM-Light für dieses Projekt. – Miro