【发布时间】:2012-03-01 13:06:19
【问题描述】:
我有一个看似简单的任务,这让我很头疼,希望能得到一些帮助。
我想要完成的是将两个布尔值绑定到两个RadioButtons 的 IsChecked 属性,共享相同的GroupName(因此一次只检查一个)。
我面临的问题是,当 ContentPresenter 的内容即将更改时(通过绑定到 ComboBox 的 SelectedItem),当前内容会收到对具有相同属性值的 Property-setter 的调用,但从即将成为新内容的视图模型中。 (!) 最终结果是视图模型发生了变化,尽管没有单击绑定到相关属性的 RadioButton。
我已经输入了 together a sample app 来说明问题所在。要重现,请运行应用程序并按照以下步骤操作:
- 在组合框中选择“One” => MyPropery 已选中,MyProperty2 未选中。
- 在组合框中选择“三” => MyPropery 已选中,MyProperty2 未选中。
- 仍然选择“三”时,单击 MyProperty2 => 选中 MyProperty2(也在调试输出窗口中指示)
- 在组合框中选择“一个” => MyPropery 已选中,MyProperty2 未选中。 注意调试窗口如何显示对象“三”的 MyProperty2 是如何设置为 false 的
- 在组合框中选择“三” => 现在两个单选按钮都未选中(由于 #4)。
如果在#3 和#4 之间,首先在组合框中选择“Two”让 ContentPresenter 显示另一个视图(通过 DataTemplate 选择),问题不会出现!?
有人可以解释一下为什么在第 4 步中当 ContentPresenter 交换视图时设置属性,以及可以做些什么?
【问题讨论】:
标签: c# wpf data-binding