В моем проекте WPF у меня немного сложное управление. В проекте я использую только элементы управления (они все шаблонные), кроме MainWindow.
На одном экране у меня есть следующий макет (для отображения макета после применения шаблонов и заполнения содержимого):
MyScreenControl
-MyTableControl
--ItemsControl
--- HeaderItemsControl
-----HeaderItemsControl.Header
------MyHeaderControl
- ----HeaderItemsControl.Items
------MyItemControl
------MyItemControl
------MyItemControl
...
Когда я нахожусь в файле кода ScreenControl, в методе OnMouseLeftButtonDown я хотел бы определить, произошло ли событие щелчка из MyHeaderControl или MyItemControl.
Источник MouseButtonEventArgs — это ScreenControl, а OriginalSource — это TextBlock в шаблоне MyItemControl/MyHeaderControl.
Моя первая попытка найти MyItemControl/MyHeaderControl состояла в том, чтобы начать с OriginalSource и рекурсивно просмотреть тип свойства Parent. Он отлично работает, пока я не доберусь до корня шаблона (в данном случае это ViewBox), но в корне нет родительского элемента.
Я использовал подобный метод в моем более раннем проекте az, и он работал, но тогда я работал с пользовательскими элементами управления, а не с элементами управления или шаблонами.
Любые идеи, как мне подойти к этой проблеме (хорошая идея так же хороша, как и код)?
спасибо, Теншико