c# – 如何访问x:代码中的Name-property – 对于非FrameworkEle
与
another question类似,我想通过代码访问对象的x:Name属性,在这种情况下,有问题的对象不是FrameworkElement,因此没有Name属性.我也无法访问成员变量.
在我的情况下,我有一个带有命名列的ListView,并希望扩展ListView类,以便它保持列布局.对于这个功能,我需要命名列,因为其他原因重新使用我需要设置的x:Name属性是有意义的,而不是添加附加的“ColumnName”属性. 我目前的“解决方案”: <GridViewColumn Header="X" localControls:ExtendedListView.ColumnName="iconColumn" /> 期望: <GridViewColumn Header="X" x:Name="iconColumn" /> 那么有可能以某种方式获得“x:Name”值吗? 解决方法
请参阅IanG在以下主题中的答案:
How to read the x:Name property from XAML code in the code-behind
因此,所有x:Name都可以通过创建具有该特定名称的字段来访问此对象.如果要获取x:它的名称,则必须迭代所有字段并查看该字段是否是您要查找的对象,返回字段名称. 他确实提出了一种在代码隐藏文件中执行此操作的方法,尽管我认为您当前使用附加属性的方法是一个更好的解决方案 public string GetName(GridViewColumn column) { var findMatch = from field in this.GetType().GetFields(BindingFlags.NonPublic | BindingFlags.Instance) let fieldValue = field.GetValue(this) where fieldValue == column select field.Name; return findMatch.FirstOrDefault(); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |