WPF 数据网格和行数据绑定事件?
WPF datagrid and row data bound event?
我有一个 WPF 网格,其中 autogeneratedcolumn 设置为 true。我必须为网格中的每一行修改给定单元格的模板。 WPF 数据网格中是否有一个事件可以让我捕获每一行并在呈现之前执行必要的修改?
如果没有,那么您能否建议在自动生成的数据网格中自定义行单元格的最佳方法?
我建议使用 DataTemplateSelector
而不是搞乱事件。这将允许您以编程方式根据单元格中的数据干净地改变单元格模板。 WPF 中的挂钩事件不可避免地导致引用的保留时间比您预期的要长得多,这表现为内存泄漏。
MSDN 文档可用 here。
来自 MSDN 的代码:
Namespace SDKSample
Public Class TaskListDataTemplateSelector
Inherits DataTemplateSelector
Public Overrides Function SelectTemplate(ByVal item As Object, ByVal container As DependencyObject) As DataTemplate
Dim element As FrameworkElement
element = TryCast(container, FrameworkElement)
If element IsNot Nothing AndAlso item IsNot Nothing AndAlso TypeOf item Is Task Then
Dim taskitem As Task = TryCast(item, Task)
If taskitem.Priority = 1 Then
Return TryCast(element.FindResource("importantTaskTemplate"), DataTemplate)
Else
Return TryCast(element.FindResource("myTaskTemplate"), DataTemplate)
End If
End If
Return Nothing
End Function
End Class
End Namespace
我有一个 WPF 网格,其中 autogeneratedcolumn 设置为 true。我必须为网格中的每一行修改给定单元格的模板。 WPF 数据网格中是否有一个事件可以让我捕获每一行并在呈现之前执行必要的修改?
如果没有,那么您能否建议在自动生成的数据网格中自定义行单元格的最佳方法?
我建议使用 DataTemplateSelector
而不是搞乱事件。这将允许您以编程方式根据单元格中的数据干净地改变单元格模板。 WPF 中的挂钩事件不可避免地导致引用的保留时间比您预期的要长得多,这表现为内存泄漏。
MSDN 文档可用 here。
来自 MSDN 的代码:
Namespace SDKSample
Public Class TaskListDataTemplateSelector
Inherits DataTemplateSelector
Public Overrides Function SelectTemplate(ByVal item As Object, ByVal container As DependencyObject) As DataTemplate
Dim element As FrameworkElement
element = TryCast(container, FrameworkElement)
If element IsNot Nothing AndAlso item IsNot Nothing AndAlso TypeOf item Is Task Then
Dim taskitem As Task = TryCast(item, Task)
If taskitem.Priority = 1 Then
Return TryCast(element.FindResource("importantTaskTemplate"), DataTemplate)
Else
Return TryCast(element.FindResource("myTaskTemplate"), DataTemplate)
End If
End If
Return Nothing
End Function
End Class
End Namespace