如何获取x:名称值运行时

时间:2010-03-26 20:02:59

标签: wpf xaml gridview gridviewcolumn

我得到了:

   <ListView.View GridViewColumnHeader.Click="ColumnHeaderClick">
      <GridView>
          <GridViewColumn x:Name="Col" Header="Item">   



   private void ColumnHeaderClick(object sender, RoutedEventArgs e)
     {
        GridViewColumnHeader headerClicked = e.OriginalSource as GridViewColumnHeader;

     }

现在,如何在方法中获取GridViewColumn的x:Name值?我不能在xaml中为列添加'Name'属性,它在运行时就像空字符串一样。虽然我能够获得标题,但仍需要获取x:Name值。

2 个答案:

答案 0 :(得分:3)

当您对非x:NameFrameworkElement的元素使用FrameworkContentElement语法时,它会使用NameScope注册该元素。不幸的是,你无法检索元素的名称,查找只能反过来。

如果您需要传递有关DataGridColumn的其他信息,那么自定义附加属性将是一种简单的方法。

有关x:Name can be found on MSDN的更多信息。另外,NameScope documentation describes its behavior

答案 1 :(得分:0)

您可以利用反射来获取值:

GridViewColumnHeader headerClicked = e.OriginalSource as GridViewColumnHeader;
String xName = (String)headerClicked.getType().GetProperty("Name").GetValue(headerClicked, null);