首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从Code Name访问x:Name?

如何从Code Name访问x:Name?
EN

Stack Overflow用户
提问于 2009-11-18 21:42:36
回答 2查看 3.1K关注 0票数 2

我有一个数据网格,其中我使用了DataGridTemplateColumn和DataGridTextColumn。我想在运行时访问这些列,所以我为它们分配了x:Name属性。但是我没有在后面的代码中获得这个值,所以我查找DataGrid,然后通过迭代DataGrid.Columns读取对象。如何从C#中对象读取x:Name属性?

我需要它在运行时对特定的列执行一些特定的操作。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-11-19 14:26:34

不会将datagrid列添加到可视化树中。(因此,您可能无法在代码后台访问它)-请参阅可视化布局上的vinces blog

您可以查看header属性,也可以派生并添加自己的属性来唯一标识该列。这就是我所做的,我发现这些列有点像香草,并且为不同的用途派生了相当多的列。

票数 1
EN

Stack Overflow用户

发布于 2010-03-20 06:08:30

另一种方法是定义附加属性:

1)从DataGrid派生一个带有附加属性的新类

代码语言:javascript
复制
Public Class FilteringDataGrid
   Inherits DataGrid


   Public Shared Function GetFilterProp(ByVal element As DependencyObject) As String
      If element Is Nothing Then
         Throw New ArgumentNullException("element")
      End If

      Return CStr(element.GetValue(FilterPropProperty))
   End Function

   Public Shared Sub SetFilterProp(ByVal element As DependencyObject, ByVal value As String)
      If element Is Nothing Then
         Throw New ArgumentNullException("element")
      End If

      element.SetValue(FilterPropProperty, value)
   End Sub

   Public Shared ReadOnly FilterPropProperty As  _
                          DependencyProperty = DependencyProperty.RegisterAttached("FilterProp", _
                          GetType(String), GetType(FilteringDataGrid), _
                          New FrameworkPropertyMetadata(Nothing))
End Class

2)在Xaml中设置道具

代码语言:javascript
复制
<dg:DataGridTextColumn local:FilteringDataGrid.FilterProp="ItemName" x:Name="dbcItemName" Header="Item" >

3)读取值

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1756058

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档