(这里是 UI 自动化和 WPF 的初学者,所以也许我做错了。)
我们有一个自定义控件,可以显示要交互式查看或编辑的项目。在添加 UI 自动化支持时,我现在使用了该控件的适当实现OnCreateAutomationPeer
并实现了AutomationPeer
特定的控件。在大多数情况下,事情似乎运行良好。我可以在 UIA 树中看到我们的孩子,当我添加孩子时,他们会出现在那里。
从我现在在 .NET 源代码中看到的情况来看, thr 树的更改会自动工作,因为UpdateLayout
WPF 内部的每个更改都会导致各自AutomationPeer
的 s 刷新它们的子树。所以这些东西开箱即用。
但是,在删除项目时 my不会被调用,显然AutomationPeer
是因为当 a从其树中删除GetChildrenCore
时 WPF 并不真正需要更新任何内容。Visual
这会导致 UIA 树包含不再存在的元素。
现在我想知道,这通常应该如何工作。我看到有些控件AutomationPeer
在发生变化时会直接通知它们的 s。这可能是一条路线。或者我们的自定义控件是否应该做一些不同的事情,以便即使在删除某些内容时也会发生布局?