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