页面导航后WPF MVVM数据绑定中断

dth*_*her 5 navigation data-binding wpf mvvm

我在WPF导航样式的应用程序中有一个显示搜索结果的页面.该页面包含几个数据绑定控件.页面本身工作正常; 它执行搜索并返回结果.数据绑定的CheckBox控件正常工作.

但是,如果我单击结果链接然后单击后退按钮返回结果列表,则所有CheckBox.IsChecked数据绑定都会被破坏.其他数据绑定控件(ComboBoxes,DatePickers等)继续按预期工作.绑定到CheckBox控件上的其他属性,就像IsEnabled正常工作一样.但是在IsChecked我刷新页面之前,绑定仍然存在.

这是我的一个CheckBox控件使用的XAML:

<CheckBox IsChecked="{Binding IncludeNote}" Content="Note" IsEnabled="{Binding IsBusy, Converter={StaticResource boolNot}}" />
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,这里没有什么花哨的东西.但在将WPF应用程序向前或向后导航到页面后,IsChecked绑定将被破坏,而IsEnabled属性将继续工作.

这里发生了什么?这是一个错误吗?

更新:在玩了一些替代方案之后,我发现这个问题也会影响CheckBox派生的ToggleButton控件.

UPDATE2: TextBox.Text属性也被破坏了.

有没有办法"刷新"这些控件的数据绑定?或者我应该采取其他方法来解决此问题?

dth*_*her 5

显然,这一个错误.这是关于Microsoft Connect的错误报告: 绑定在后退/前进导航后不起作用.

报告错误的用户RQDQ也提到了他处理问题的方法:

我发现的解决方法是在Loaded事件期间为Page中的所有绑定手动调用BindingOperations.SetBinding.无论是显式导航还是通过历史导航(后退/前进操作),这似乎都有效.

这只是WPF4中的一个问题.数据绑定在.NET 3.5中按预期工作.

我希望微软能够迅速解决这个问题.对于导航样式的WPF应用程序来说,这是一个严重的问题.