转义WPF日期格式中的占位符字符

时间:2014-02-20 10:19:29

标签: c# wpf datetime formatting

我正在尝试以下列格式在WPF TextBlock中显示日期:

09:35 Uhr

我的第一次尝试当然不起作用:

<TextBlock Text="{Binding StartTime,StringFormat={}{0:hh:mm Uhr}}"

导致字符串09:35 U9r,因为日期之后字符串中的h被解释为小时的占位符。将h写为&#104;也不起作用,也不会尝试将其作为{{h}}转义。

那么,它实际上可以实现我想做的事情吗?或者我是否必须将字符串分解为两个TextBlock,使用自定义转换器或类似的东西?

2 个答案:

答案 0 :(得分:2)

试试这个:

<TextBlock Text="{Binding Path=StartTime, StringFormat={}{0:hh:mm} Uhr}" ... />

答案 1 :(得分:1)

根据http://msdn.microsoft.com/en-us/library/aa719856(v=vs.71).aspx

使用\
<TextBlock Text="{Binding StartTime,StringFormat={}{0:hh:mm U\\hr}}"

或者您也可以使用类似

的IValueConverter
public class MyFormatter : IValueConverter
{
  public object Convert(object value, Type tagetType, object parameter, CultureInfo culture)
  {
     return string.Format("{0:hh:mm}", value)+" Uhr";
  }
...
//Just throw NotImplemented for ConvertBack
}