我必须格式化一个字符串(“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中是否有数据类型可以在几天和几小时内表示我的数据,因此我不必使用此字符串格式。
答案 0 :(得分:1)
关于附加:当在sql中存储时间时,我总是使用时间戳(自1970年1月1日以来的毫秒)。它们非常容易排序,几乎可以在每种编程语言中对DateTime对象(或类似对象)进行解析。
答案 1 :(得分:1)
您需要在ValueConverter中实现ConvertBack功能,才能将10 Dy 08 Hr 10 Min
转换为00:10:08:10
。
假设字符串的格式正确,则解析和转换它应该不会太难。
您可以考虑使用timespan来保存数据。它存储一段时间或持续时间。