我有一个相当复杂的数据树,我在 WPF UserControl 中显示,并且该控件使用 DataTemplates 来创建各种 UI 元素并将其链接到树内的各种数据。这是一个(非常)简单的示例,它涉及在位于画布上的 ItemsControl 中显示的项目列表,并且每个元素都用 TextBox 表示:
<ItemsControl.ItemTemplate>
<DataTemplate>
<TextBox
Text="{Binding ...}"
Canvas.Left="{Binding ...}"
Canvas.Top="{Binding ...}"
/>
</DataTemplate>
</ItemsControl.ItemTemplate>
现在我的 UserControl 中发生了一个事件,我引用了其中一个列表项,我想将焦点设置到它后面的 TextBox 项。有没有一种简单的方法可以从其数据上下文绑定到的数据对象中获取 TextBox 元素?还是我必须自己手动遍历整个视觉树?
我意识到我可以将一个成员放入数据元素本身并使用触发器来做我想做的任何事情,但在我的情况下,它需要一个额外的抽象层,如果可能的话,我真的很想避免.