WPF数据网格和行数据绑定事件?

时间:2015-03-26 13:00:56

标签: c# wpf wpfdatagrid

我有一个WPF网格,其中autogeneratedcolumn设置为true。我必须为网格中的每一行修改给定单元格的模板。 WPF数据网格中是否有一个事件可以让我捕获每一行并在渲染之前执行必要的修改?

如果没有,那么您能否建议在自动生成的数据网格中定制行单元格的最佳方法是什么?

1 个答案:

答案 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