我有一个WPF网格,其中autogeneratedcolumn设置为true。我必须为网格中的每一行修改给定单元格的模板。 WPF数据网格中是否有一个事件可以让我捕获每一行并在渲染之前执行必要的修改?
如果没有,那么您能否建议在自动生成的数据网格中定制行单元格的最佳方法是什么?
答案 0 :(得分:0)
我建议使用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