Windows Phone XAML中的TimeSpan字符串格式
我正在尝试将XAML StringFormat应用于TimeSpan
属性。
注意此问题适用于Windows Phone 。
对于WPF,正确的语法是:
Text="{Binding ElapsedTime,StringFormat={}{0:m\\:ss}}"
对于Silverlight,它需要单引号:
Text="{Binding ElapsedTime,StringFormat='{}{0:m\\:ss}'}"
但对于Windows Phone,无论我尝试过什么,输出总是完整的“00:00:00.0000000”。
-
StringFormat='m\\:ss'
-
StringFormat='{}{0:m\\:ss}'
-
StringFormat='m\:ss'
-
StringFormat=m\\:ss
我是否以某种方式错过了正确的排列,或者在Windows Phone中出于某种原因这是不可能的?
更新
我使用了一种解决方法(下面的答案),但是如果有人知道的话,我仍然会想要解释这种奇怪的东西。 (我说“古怪”,因为StringFormat
与DateTime
属性完美配合,而不是TimeSpan
。)
更新#2
2010年的一个非常相似的问题 。 也许这只是旧版和/或“紧凑版”.Net的问题。 或者这个答案 ( StringFormat=\{0:h\\:mm\}
)是否有效?
对于我创建的名为ElapsedTime的Timespan
属性,这是有用的。
Text="{Binding ElapsedTime,StringFormat={}{0:mm\\:ss}}"
全格式
Text="{Binding ElapsedTime,StringFormat={}{0:dd\\.hh\\:mm\\:ss}}"
我最终使用了一种解决方法。
在视图模型中使用新属性:
public string DurationStr { get { return Duration.ToString(@"m\:ss"); } } public TimeSpan Duration { get { return _duration; } set { _duration = value; RaisePropertyChanged("Duration"); RaisePropertyChanged("DurationStr"); } } private TimeSpan _duration;