我想ItemContainer
从现有ItemsControl
对象中确定类型。
var item = control as ItemsControl;
//HOW to get child container Type?
Blend如何完成的示例:
Blend 以某种方式确定当前TabControl
类型的子项是TabItem
.
如何在代码中做同样的事情?
我想ItemContainer
从现有ItemsControl
对象中确定类型。
var item = control as ItemsControl;
//HOW to get child container Type?
Blend如何完成的示例:
Blend 以某种方式确定当前TabControl
类型的子项是TabItem
.
如何在代码中做同样的事情?
大多数类都有一个StyleTypedPropertyAttribute
从ItemsControl
. 得到一个Property
等于"ItemContainerStyle"
。此StyleTargetType
属性的属性应该为您提供项目类型。
请注意,您必须小心不要从基类中获取属性。此外,虽然这适用于大多数类型(TabControl
, ListBox
),但某些类(例如)DataGrid
根本没有使用此属性进行注释。
这是我用于内置框架类型的列表:
var _itemsContainerTypeByContainerType = new Dictionary<Type, Type> {
{ typeof(ComboBox), typeof(ComboBoxItem) },
{ typeof(ContextMenu), typeof(MenuItem) },
{ typeof(DataGrid), typeof(DataGridRow) },
{ typeof(DataGridCellsPresenter), typeof(DataGridCell) },
{ typeof(DataGridColumnHeadersPresenter), typeof(DataGridColumnHeader) },
{ typeof(HeaderedItemsControl), typeof(ContentPresenter) },
{ typeof(ItemsControl), typeof(ContentPresenter) },
{ typeof(ListBox), typeof(ListBoxItem) },
{ typeof(ListView), typeof(ListViewItem) },
{ typeof(Menu), typeof(MenuItem) },
{ typeof(MenuBase), typeof(MenuItem) },
{ typeof(MenuItem), typeof(MenuItem) },
{ typeof(MultiSelector), typeof(ContentPresenter) },
{ typeof(Selector), typeof(ContentPresenter) },
{ typeof(StatusBar), typeof(StatusBarItem) },
{ typeof(TabControl), typeof(TabItem) },
{ typeof(TreeView), typeof(TreeViewItem) },
{ typeof(TreeViewItem), typeof(TreeViewItem) }
};