我有一个 Silverlight 页面打开一个对话框。它是一个管理页面,其中包含一些通过 Web 服务与数据库通信的高级逻辑。对于 Silverlight 客户端,我们充分利用了 MVVM。第一次打开对话框,根据实现的逻辑一切正常。
问题: 第二次打开对话框时,我们的数据绑定设置器开始接收错误的值。
代码:
对话框是如何创建的:
MyPopupViewModel myPopup = new MyPopupViewModel();
Caliburn.Micro.Execute.OnUIThread(() => WindowManager.ShowDialog(myPopup));
最终得到错误值的绑定之一:
<ComboBox
ItemsSource="{Binding YesNoItems}"
SelectedValue="{Binding IsSynchronizing, Mode=TwoWay, Converter={StaticResource BooleanToYesNoConverter}}"
/>
我试过的:
我在设置器中放置了断点。这就是我如何意识到逻辑是正确的,但是第二次打开 setter 时会使用其他值调用它。
我发现吸气剂被称为 {1, 2, 1} 次 {1st, 2nd, 3rd} 次它们被打开。
我确保每次都初始化对话框。也许 Caliburn-micro 以某种方式缓存了旧的,但它显然不会长时间缓存它,因为它在第三次打开时再次正常工作。