请注意,如果您希望所有后代都属于覆盖的 TreeViewItem 子类,则接受的答案对于 TreeView 是不够的。
这是完整的解决方案:
- 覆盖 TreeViewItem 类
public class TreeViewItemEx : TreeViewItem
{
protected override DependencyObject GetContainerForItemOverride()
{
return new TreeViewItemEx (); // Required to preserve the item type in all the hierarchy
}
protected override bool IsItemItsOwnContainerOverride(object item)
{
return item is TreeViewItemEx ;
}
}
- 覆盖 TreeView 类
public class TreeViewEx : TreeView
{
protected override DependencyObject GetContainerForItemOverride()
{
return new TreeViewItemEx();
}
protected override bool IsItemItsOwnContainerOverride(object item)
{
return item is TreeViewItemEx;
}
}