我得到了一个打开对话框的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