我有一个数据网格,其中我使用了DataGridTemplateColumn和DataGridTextColumn。我想在运行时访问这些列,所以我为它们分配了x:Name属性。但是我没有在后面的代码中获得这个值,所以我查找DataGrid,然后通过迭代DataGrid.Columns读取对象。如何从C#中对象读取x:Name属性?
我需要它在运行时对特定的列执行一些特定的操作。
发布于 2009-11-19 14:26:34
不会将datagrid列添加到可视化树中。(因此,您可能无法在代码后台访问它)-请参阅可视化布局上的vinces blog。
您可以查看header属性,也可以派生并添加自己的属性来唯一标识该列。这就是我所做的,我发现这些列有点像香草,并且为不同的用途派生了相当多的列。
发布于 2010-03-20 06:08:30
另一种方法是定义附加属性:
1)从DataGrid派生一个带有附加属性的新类
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 Class2)在Xaml中设置道具
<dg:DataGridTextColumn local:FilteringDataGrid.FilterProp="ItemName" x:Name="dbcItemName" Header="Item" >3)读取值
https://stackoverflow.com/questions/1756058
复制相似问题