给定一个任意ItemsControl
,是否可以获得ItemContainerGenerator
创建/使用的容器对象的类型?
例如,给定ListBox
,我正在尝试获取类型ListBoxItem
。对于TreeView
,它将是TreeViewItem
等。
我正在尝试为任何ItemsControl
(或更准确地说,使用ItemContainerGenerator
的任何控件找到通用解决方案。)
我专门寻找Type
,而不是类型的实例,我也不想依赖创建实例来检查它的类型。
答案 0 :(得分:0)
有两种方法:)
1)您需要使用反射或表达式树来调用该方法,因为它受保护。 GetContainerForItemOverride()将返回DependencyObject,然后您可以使用GetType()。
2)或者您可以调用类似treeView.ItemContainerGenerator.ContainerFromIndex(0)的内容来获取0项的容器,但只有在树(或控件)中至少有一个项目时才能使用。< / p>