找不到模板控件的父级(类型为!) (wpf)

6
在我的WPF项目中,我有一个比较复杂的控件。在这个项目中,除了MainWindow之外,我只使用控件(它们都是模板化的)。
在一个屏幕上,我有如下布局(用于显示应用模板并填充内容后的布局):
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属性的类型。它可以正常工作直到我到达模板的根(在这种情况下是ViewBox),但是根没有父元素。
我在我的早期项目中使用了类似这样的方法,它可以工作,但那时我使用的是UserControl,而不是Control或Template。
有什么好的方法可以解决这个问题吗?(好的想法和代码同样受欢迎)
谢谢, Tenshiko

有时候,在子元素加载完成之前,查找其父元素可能会很有帮助。例如,您可以使用 yourChild.Loaded 事件。 - peter70
2个回答

7

4

它做的是相同的事情。根据GetParent(),我的控件看起来像: - Tenshiko
网格-网格-文本块,而不是控件-网格-网格-文本块 - Tenshiko
非常好的提示,无价的建议,感谢您,正是我所需要的,谢谢! - Piotr Golacki

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接