在我的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
在一个屏幕上,我有如下布局(用于显示应用模板并填充内容后的布局):
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