是否可以'刷新'WPF数据绑定

时间:2009-03-18 00:31:00

标签: wpf data-binding binding refresh

我有一个xaml TabControl,在一个页面上,有3个RadioButtons,每个都绑定到相邻ListView的选定值上的不同属性。在ListView中的所选项目之间切换后,我的单选按钮似乎忘记了它们已绑定且不刷新。

所以在调试器中观察它,当我切换到一个新的选定项目时,我看到非用户代码首先检查所有3个属性的值,然后只检查前两个,最后只检查第一个。但是,如果我更改标签并更改回来,它似乎又给了我一些用途。

绑定本身相当简单。将bool属性与IsChecked的TwoWay绑定。它的深度为4级(Path = DataModel.Selected.A.B),但我有其他相同深度的东西可以正常工作。

这是人们听说过的,知道可能会发生什么吗?或者如果绑定以某种方式被遗忘,有没有办法明确提醒xaml?

3 个答案:

答案 0 :(得分:8)

可以手动更新这样的绑定:

TestCheckBox
    .GetBindingExpression(CheckBox.IsCheckedProperty)
    .UpdateTarget();

话虽如此,我没有100%的信心,这将纠正你的根本问题。在使用WPF绑定之前我没有遇到过这类问题,但是我在选项卡控件上遇到了一些奇怪的问题。

答案 1 :(得分:6)

这显然是一个已知的问题:

http://social.msdn.microsoft.com/forums/en-US/wpf/thread/8eb8280a-19c4-4502-8260-f74633a9e2f2/

简而言之,当尝试取消选中任何其他按钮时,RadioButton(通过.Net 3.5sp1)以某种方式杀死其他RadioButtons的绑定。简单的修复(读取:hack)是为每个radiobutton分配一个不同的GroupName,然后他们不会试图弄乱彼此

答案 2 :(得分:1)

解决此问题的另一种方法是伪造ListBox中的属性列表,并将ListBoxItem模板设置为单选按钮。