我得到了:
<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值。
答案 0 :(得分:3)
当您对非x:Name
或FrameworkElement
的元素使用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);