我得到了一個打開對話框的Silverlight頁面。它是一個管理頁面,其中一些高級邏輯通過web服務與數據庫進行交談。對於Silverlight客戶端,我們最大限度地使用MVVM。第一次打開對話框時,根據實施的邏輯,一切正常。Silverlight綁定值錯誤
問題:的秒一次打開的對話框中,我們的數據綁定製定者開始接收錯誤的價值觀。
代碼:
如何創建對話框:
MyPopupViewModel myPopup = new MyPopupViewModel();
Caliburn.Micro.Execute.OnUIThread(() => WindowManager.ShowDialog(myPopup));
一個綁定的,最終得到錯誤的值:
<ComboBox
ItemsSource="{Binding YesNoItems}"
SelectedValue="{Binding IsSynchronizing, Mode=TwoWay, Converter={StaticResource BooleanToYesNoConverter}}"
/>
我曾嘗試:
我在setter中放置了斷點。這是我意識到邏輯正確的原因,但是setter在第二次打開時被其他值調用。
我發現被打開的{1,2,3}次{1,2,3}次的獲得者被稱爲{1,2,3}次。
我確保每次都初始化對話框。也許Caliburn-micro會以某種方式緩存舊的,但它顯然不會緩存很長時間,因爲它在第三次打開時會再次正常工作。
你不使用窗口管理器,用SL時需要類似ShowDialogResult?由於它是異步的? – 2012-04-04 19:26:15
嗯,我實際上在創建對話框時添加了關閉事件的事件處理程序。 – JOG 2012-04-05 07:55:35