私の WPF プロジェクトには、少し複雑なコントロールがあります。このプロジェクトでは、MainWindow 以外にコントロールのみを使用します (それらはすべてテンプレート化されています)。
1 つの画面に次のレイアウトがあります (テンプレートが適用され、コンテンツが入力された後のレイアウトを表示するため)。
MyScreenControl
-MyTableControl
--ItemsControl
--- HeaderItemsControl
-----HeaderItemsControl.Header
------MyHeaderControl
-----HeaderItemsControl.Items
------MyItemControl
------MyItemControl
--- ---MyItemControl
...
ScreenControl のコード ファイルにいるとき、OnMouseLeftButtonDown メソッドで、クリック イベントが MyHeaderControl または MyItemControl から来たかどうかを判断したいと思います。
MouseButtonEventArgs の Source は ScreenControl であり、 OriginalSource は MyItemControl/MyHeaderControl のテンプレートの TextBlock です。
MyItemControl/MyHeaderControl を見つける最初の試みは、OriginalSource から開始し、Parent プロパティの型を再帰的に調べることでした。Template のルート (この場合は ViewBox) に到達するまで問題なく動作しますが、ルートには Parent 要素がありません。
私は私の以前のプロジェクトでこのような方法を使用しましたが、それは機能しましたが、その後、コントロールやテンプレートではなく、ユーザーコントロールを使用していました。
この問題にどのようにアプローチすればよいでしょうか (良いアイデアはコードと同様に歓迎されます)。
thx、テンシコ