你能从给定的ItemContainerGenerator获取容器类型吗?

时间:2015-10-01 17:44:38

标签: c# wpf itemscontrol itemcontainergenerator

给定一个任意ItemsControl,是否可以获得ItemContainerGenerator创建/使用的容器对象的类型?

例如,给定ListBox,我正在尝试获取类型ListBoxItem。对于TreeView,它将是TreeViewItem等。

我正在尝试为任何ItemsControl(或更准确地说,使用ItemContainerGenerator的任何控件找到通用解决方案。)

我专门寻找Type,而不是类型的实例,我也不想依赖创建实例来检查它的类型。

1 个答案:

答案 0 :(得分:0)

有两种方法:)

1)您需要使用反射或表达式树来调用该方法,因为它受保护。 GetContainerForItemOverride()将返回DependencyObject,然后您可以使用GetType()。

2)或者您可以调用类似treeView.ItemContainerGenerator.ContainerFromIndex(0)的内容来获取0项的容器,但只有在树(或控件)中至少有一个项目时才能使用。< / p>