在自动生成的数据网格列中,我想用空格替换某个值(-1)。
我创建了一个IValueConverter:
<ValueConversion(GetType(DataRowView), GetType(String))>
Public Class UsageConversion
Implements IValueConverter
Public Function Convert(value As Object, targetType As System.Type, parameter As Object, culture As System.Globalization.CultureInfo) As Object Implements System.Windows.Data.IValueConverter.Convert
Dim model As ProgModel = DirectCast(value, ProgModel)
If model.Usage = -1 Then
Return ""
Else
Return model.Usage.ToString
End If
End Function
Public Function ConvertBack(value As Object, targetType As System.Type, parameter As Object, culture As System.Globalization.CultureInfo) As Object Implements System.Windows.Data.IValueConverter.ConvertBack
Return Nothing
End Function
End Class
并将其绑定到OnAutoGeneratingColumn方法:
Dim dgtc As DataGridTextColumn = TryCast(e.Column, DataGridTextColumn)
If dgtc IsNot Nothing Then
Dim UsageBinding = New Binding()
UsageBinding.Converter = New UsageConversion
Dim tbStyle As New Style
tbStyle.TargetType = GetType(TextBlock)
tbStyle.Setters.Add(New Setter(TextBlock.TextProperty, UsageBinding))
dgtc.ElementStyle = tbStyle
End If
OnAutoGeneratingColumn运行良好,但转换代码不运行 - 在其中设置断点显示它永远不会被调用。
任何想法为什么?
我正在使用.Net 4.0
谢谢!
答案 0 :(得分:2)
我不确定您为什么要在Binding
上设置此ElementStyle
...当然,您只想在整个列上设置Binding
:< / p>
Dim dgtc As DataGridTextColumn = TryCast(e.Column, DataGridTextColumn)
If dgtc IsNot Nothing Then
Dim UsageBinding = New Binding()
UsageBinding.Converter = New UsageConversion
dgtc.Binding = UsageBinding
答案 1 :(得分:0)
我猜你必须设置UsageBinding.Path属性
它没有设置Binding.Path属性,因此您将其绑定为空 这就是为什么转换器没有价值
的原因试试这个
Dim UsageBinding = New Binding(e.PropertyName)
UsageBinding.Converter = New UsageConversion
dgtc.Binding=UsageBinding