WPF UserControl に表示しているかなり複雑なデータ ツリーがあり、コントロールは DataTemplates を使用してさまざまな UI 要素を作成し、ツリー内のさまざまなデータにリンクしています。これは (非常に) 単純化された例で、項目のリストがキャンバス上にある ItemsControl に表示され、各要素が TextBox で表されます。
<ItemsControl.ItemTemplate>
<DataTemplate>
<TextBox
Text="{Binding ...}"
Canvas.Left="{Binding ...}"
Canvas.Top="{Binding ...}"
/>
</DataTemplate>
</ItemsControl.ItemTemplate>
UserControl 内でイベントが発生したため、リスト項目の 1 つへの参照があり、その背後にある TextBox 項目にフォーカスを設定したいと考えています。データ コンテキストがバインドされているデータ オブジェクトから TextBox 要素を取得する簡単な方法はありますか? それとも、ビジュアル ツリー全体を自分で手動でたどる必要がありますか?
データ要素自体の中にメンバーを配置し、トリガーを使用して自分がやろうとしていることを何でも実行できることを認識していますが、私の場合、可能であれば避けたい追加の抽象化レイヤーが必要になります.