ダイアログを開くSilverlightページが表示されました。これは、Webサービスを介してデータベースと通信する高度なロジックを備えた管理ページです。Silverlightクライアント側では、MVVMを最大限に使用します。初めてダイアログを開くと、実装されたロジックに従ってすべてが正常に機能します。
問題: 2回目にダイアログを開くと、データバインドセッターが間違った値を受け取り始めます。
コード:
ダイアログの作成方法:
MyPopupViewModel myPopup = new MyPopupViewModel();
Caliburn.Micro.Execute.OnUIThread(() => WindowManager.ShowDialog(myPopup));
最終的に間違った値を取得するバインディングの1つ:
<ComboBox
ItemsSource="{Binding YesNoItems}"
SelectedValue="{Binding IsSynchronizing, Mode=TwoWay, Converter={StaticResource BooleanToYesNoConverter}}"
/>
私が試したこと:
セッターにブレークポイントを設定します。このようにして、ロジックは正しいが、セッターが2回目に開かれたときに他の値で呼び出されることに気づきました。
ゲッターは、開かれたときに{1、2、1}回{1、2、3}回呼び出されていることがわかりました。
ダイアログが毎回初期化されることを確認しました。たぶんCaliburn-microは古いものをなんとかしてキャッシュしますが、3回目に開いたときに再び正常に動作するため、長い間キャッシュしないようです。