4

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

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

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

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

4

3 回答 3

8

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

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

话虽如此,我没有 100% 的信心认为这会纠正您的根本问题。我以前没有遇到过 WPF 绑定的此类问题,但我在选项卡控件方面遇到了一些奇怪的问题。

于 2009-03-18T00:51:32.453 回答
6

这显然是一个已知问题:

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

简而言之,当一个 RadioButton(通过 .Net 3.5sp1)在尝试取消选中任何其他按钮时被选中时,它会以某种方式杀死其他 RadioButtons 的绑定。简单的解决方法(阅读:hack)是为每个单选按钮分配一个不同的组名,然后他们不会试图互相混淆

于 2009-03-18T01:33:25.847 回答
1

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

于 2009-03-18T02:10:39.847 回答