[Skia] ContentPresenter: 发出的 DataTemplate 树在内容更改时仍保持活动状态并重新绑定,导致其双向绑定损坏新内容的视图模型
作者: mikernet创建于 2026年9月2日更新于 2026年9月18日
标签triage/untriaged
当前行为 当具有 ContentTemplateSelector 的 ContentPresenter 获取新的 Content 值时,以前模板的可视树不会卸载或解除绑定。旧树仍然存在,重新绑定到新内容(我们的两个模板都共享相同的 x:DataType),其双向绑定会继续针对新内容的对象发出命令。在我们的应用程序中,最明显的后果是:从以前用于单选模型显示的模板中泄露的 RadioButton 树重新绑定到多选模型的选项对象。从那时起,可见的 CheckBox 字段的行为就像一个单选按钮组:
- 用户选中一个 CheckBox → 双向绑定将
Option.IsSelected设置为true。 - 与同一对象绑定的隐藏的 RadioButton 通过其自己的双向绑定进行选中。
RadioButton.UpdateRadioButtonGroup()取消了之前选中的单选按钮(在共享的 GroupName 组中)。- 该单选按钮的双向绑定将
IsSelected设置为false,从而取消了之前选中的选项 → 其 CheckBox 取消选中。
内容来源: unoplatform/uno