有可能刷新WPF数据绑定吗?

4
我有一个xaml TabControl,在其中一个页面上有3个RadioButton,每个都绑定到相邻ListView的选择值的不同属性。在ListView中切换选定项目后,我的单选按钮似乎忘记了它们被绑定,并且不会刷新。
通过调试器观察,当我切换到新的选定项时,我看到非用户代码首先检查所有3个属性的值,然后只检查前两个属性,最终只检查第一个属性。但是,如果我更改选项卡并再次更改回来,它似乎又给了我另外几个使用机会。
绑定本身相当简单。将一个布尔属性的TwoWay绑定到IsChecked。它有4级深度(Path = DataModel.Selected.A.B),但是我在同一深度有其他东西,工作得很好。
这是人们听说过并知道可能发生什么的事情吗?或者,如果绑定被某种方式遗忘了,是否有一种方法可以明确提醒xaml?

经过进一步的Snoop研究,我实际上可以在几次选择更改后观察到绑定消失。 - wfr
3个回答

9
可以通过以下方式手动更新绑定:
TestCheckBox
    .GetBindingExpression(CheckBox.IsCheckedProperty)
    .UpdateTarget();

话虽如此,我并不百分之百地确信这能解决你的根本问题。我以前在WPF绑定中没有遇到过这种问题,但是我遇到了一些奇怪的选项卡控件问题。


我更倾向于责怪RadioButton而不是TabControl,但这只是因为我以前遇到过其他问题。不过我会尝试这个作为临时解决方案。 - wfr
即使在每次选择更改时执行此操作,似乎也没有帮助,这与绑定完全丢失的理论相吻合。 - wfr

6

1
另一种解决此问题的方法是在ListBox中伪造一个属性列表,并使ListBoxItem模板成为单选按钮。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接