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中出于某种原因这是不可能的?


更新

我使用了一种解决方法(下面的答案),但是如果有人知道的话,我仍然会想要解释这种奇怪的东西。 (我说“古怪”,因为StringFormatDateTime属性完美配合,而不是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;