我使用LogicalTreeHelper.GetParent()
方法递归地查找各种其他WPF元素的根元素。这几乎适用于所有情况,但DataGridColumn失败,如DataGridTextColumn
。 我发现DataGridColumn
不是逻辑树和视觉树的一部分。我能以某种方式找到它所属的DataGrid
(然后从网格中获取根目录)?查找DataGridColumn的根元素
阅读MSDN文档我找不到合适的解决方案。谢谢。
我的代码,以查找逻辑根:
private DependencyObject FindLogicalRoot(DependencyObject obj)
{
if (obj == null)
return null;
else
{
var parent = LogicalTreeHelper.GetParent(obj);
return parent != null ? FindLogicalRoot(parent) : obj;
}
}
嗨,你好,我能明白为什么的DataGridColumn不是视觉或逻辑树的一部分。 DataGrid.Columns属性是一个常规属性,就像TextBlock.Text或任何其他属性一样。 DataGrid使用您的列定义也会生成列,但是定义本身不会添加到可视化树中。我可以问你为什么想从DataGridColumn导航到其父项? – ColinE 2010-12-23 11:30:31
我在写一个MarkupExtension,我需要找到根元素的类型。 – slurmomatic 2010-12-23 12:30:44