私はWP7のMVVMに関する質問があります。私のアプリケーションでは、もしあなたが日付ピッカーやカレンダーのようなものを持っています。だから1日を選んだ後、その日の情報を編集して別のページに移動することができます。奇妙なRaisePropertyChangedの振る舞い
いくつかの情報を変更して戻るボタンをクリックすると、変更された情報がcorrespondingpongindバインディングで更新されていないという問題があります。そのため、navigatedtoイベントでは、そのページのVMからパブリックメソッドを呼び出します。このメソッド(RefreshSelectedDay)の唯一の目的は、RaisePropertyChangedを呼び出して、ページ上のバインドされたテキストフィールドに新しい情報が得られるようにすることです。しかし、何も起こらない。この情報は、MyDayクラスのインスタンスであるSelectedDayプロパティのactaullyプロパティです。
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つだけが変更されたため、伝播しません。誰かが何が起きているのかを説明できるのは素敵でしょう。
MVVMのフレームワークを使用していますか?もしそうなら、どちら? –
このプロジェクトのMVVM-Light – Miro