代码之家  ›  专栏  ›  技术社区  ›  fuzzyman

来自代码的Silverlight DataGrid列标题中的访问控制

  •  3
  • fuzzyman  · 技术社区  · 16 年前

    如何访问datagrid列标题中的控件?

    2 回复  |  直到 16 年前
        1
  •  2
  •   fuzzyman    16 年前

    好的,我通过遍历网格的可视化树来寻找DataColumnHeader,然后遍历标题树并找到我们的按钮来解决这个问题。

    遍历可视化树的代码:

    from System.Windows.Media import VisualTreeHelper
    
    def findChildren(parent, findType):
        count = VisualTreeHelper.GetChildrenCount(parent)
        for i in range(count):
            child = VisualTreeHelper.GetChild(parent, i)
            if isinstance(child, findType):
                yield child
            else:
                for entry in findChildren(child, findType):
                    yield entry
    

    它的名字是这样的:

    from System.Windows.Controls import Button
    from System.Windows.Controls.Primitives import DataGridColumnHeader
    
    for entry in findChildren(self._gridControl, DataGridColumnHeader):
        for button in findChildren(entry, Button):
            button.Click += handler
    

    请注意,从grid.Loaded事件调用此代码比较方便,这样可以确保已创建头。

        2
  •  0
  •   slugster Joey Cai    16 年前

    你试过这个吗 FrameworkElement.GetTemplateChild() 方法?