gpt4 book ai didi

wpf - 无法通过类型(!)(wpf)找到模板化控件的父级

转载 作者:行者123 更新时间:2023-12-04 18:15:30 26 4
gpt4 key购买 nike

在我的 WPF 项目中,我有一些复杂的控件。在项目中,除了 MainWindow 之外,我只使用 Controls(它们都是模板化的)。

在一个屏幕上,我有以下布局(用于在应用模板和填充内容后显示布局):

我的屏幕控制
-MyTableControl
--ItemsControl
--- HeaderItemsControl
-----HeaderItemsControl.Header
------MyHeaderControl
-----HeaderItemsControl.Items
------我的元素控件
------我的元素控件
------我的元素控件
...

当我在 ScreenControl 的代码文件中时,在 OnMouseLeftButtonDown 方法中,我想确定单击事件是来自 MyHeaderControl 还是 MyItemControl。

MouseButtonEventArgs 的 Source 是 ScreenControl,OriginalSource 是 MyItemControl/MyHeaderControl 模板中的 TextBlock。

我第一次尝试找到 MyItemControl/MyHeaderControl 是从 OriginalSource 开始并递归地查看 Parent 属性的类型。它工作正常,直到我到达模板的根(在本例中为 ViewBox),但根没有 Parent 元素。

我在 az 早期的项目中使用了这样的方法并且它起作用了,但是后来我使用的是 UserControls,而不是控件,也不是模板。

任何想法我应该如何解决这个问题(一个好主意和代码一样受欢迎)?

谢谢,
天色子

最佳答案

您是否尝试过简单地获取 originalSource 的 templatedParent ? :

Control originalSource = e.OriginalSource;

MyItemControl myItemControl = originalSource.TemplatedParent as MyItemControl;
MyHeaderControl myHeaderControl = originalSource.TemplatedParent as MyHeaderControl;

if (MyItemControl != null) ....
else if (MyHeaderControl != null) ....

(见: http://msdn.microsoft.com/en-gb/library/system.windows.frameworkelement.templatedparent.aspx)

关于wpf - 无法通过类型(!)(wpf)找到模板化控件的父级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4336801/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com