使用转换器

时间:2010-09-13 07:42:45

标签: .net wpf vb.net ivalueconverter

我必须格式化一个字符串(“00:10:08:10”)(10周08天10小时)。所以我使用了转换器并添加了datagrid绑定。我的代码:

  Public Function Convert(ByVal value As Object, ByVal targetType As System.Type, ByVal parameter As Object, ByVal culture As System.Globalization.CultureInfo) As Object Implements System.Windows.Data.IValueConverter.Convert
    Dim strList(4) As String
    Dim prefixList() As String = {"Wk", "Dy", "Hrs", "Min"}
    Dim input As String = value.ToString
    Dim Output As String = String.Empty
    If input <> String.Empty Then
        strList = input.Split(":")
        Dim itr As Integer
        For Each Str As String In strList
            If Integer.Parse(Str) <> 0 Then
                Output += Str + " " + prefixList(itr) + " "
            End If
            itr += 1
        Next
    End If
    Return Output
End Function

我正在转换它但是当我编辑数据时,转换器再次被调用,我不会有旧格式(“00:10:08:10”)而是它(10 Dy 08 Hr 10 Min) )。所以转换器明显失效了。我怎样才能使它发挥作用?

附加:mssql中是否有数据类型可以在几天和几小时内表示我的数据,因此我不必使用此字符串格式。

2 个答案:

答案 0 :(得分:1)

关于附加:当在sql中存储时间时,我总是使用时间戳(自1970年1月1日以来的毫秒)。它们非常容易排序,几乎可以在每种编程语言中对DateTime对象(或类似对象)进行解析。

答案 1 :(得分:1)

您需要在ValueConverter中实现ConvertBack功能,才能将10 Dy 08 Hr 10 Min转换为00:10:08:10

假设字符串的格式正确,则解析和转换它应该不会太难。

您可以考虑使用timespan来保存数据。它存储一段时间或持续时间。