【问题标题】:How to convert milliseconds to display mm:ss in XAML?如何将毫秒转换为在 XAML 中显示 mm:ss?
【发布时间】:2012-05-09 11:16:29
【问题描述】:

我想我需要为此使用 StringFormat,但我不知道如何找出格式。

【问题讨论】:

  • 你的意思是你有毫秒作为数字吗?你不能把它改成TimeSpan吗?

标签: c# wpf string-formatting time-format


【解决方案1】:

如果您不想创建转换器,您也可以这样做:

    <TextBox Height="23" Text="{Binding Time, StringFormat={}{0:mm:ss}}" />

时间可能是您代码中的一个属性。或者你可以将它绑定到其他东西..

There is more examples in here.

【讨论】:

  • 对不起,格式字符串不正确。正确的是:
  • 只是为了增加另一种可能性StringFormat=\{0:dd-MM-yyyy hh:mm:ss.fff tt\}
【解决方案2】:

如果您的输入值是 TimeSpan 或 DateTime,那么您可以使用简单的格式字符串。 但我认为情况并非如此。

据我所知,您需要实现自己的转换器,它将您的值作为参数,并输出格式化的字符串。 标准 C 格式化程序无法进行实际计算,例如计算分钟所需的模数。

一个例子:(这段代码没有被检查,而是即时编写的!)

public class MmSsFormatConverter : IValueConverter
{
    #region IValueConverter Members

    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        Int32 sss = (Int32)value;
        Int32 ss = sss / 1000;
        Int32 mm = ss / 60;
        ss = ss % 60;
        return string.Format(@"{0:D2}:{1:D2}", mm, ss);
    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        return Binding.DoNothing; // Thanks to Danny Varod for the suggestion!
    }

    #endregion
}

现在将命名空间添加到您的 XAML,以识别转换器,然后将转换器作为资源添加到您的 XAML 中。

然后你可以绑定到转换器,像这样:

<TextBlock Text="{Binding Milliseconds, Converter={StaticResource MmSsFormatConverter}}" />

请注意,如果您进行双向绑定,则需要实现该 ConvertBack 函数。 您还可以使用 paramater 参数来传递 ConverterParameter,例如格式字符串。

您可能希望在我编写的代码上添加类型检查和其他约束。 (超过59:59的情况呢?现在到60:00,可以到123:59)

【讨论】:

  • 更好的是,在 ConvertBack 方法中返回 Binding.DoNothing。
  • 谢谢,这正是我需要知道的!
  • 至于 Convert 方法本身,我选择了 TimeSpan length = new TimeSpan(0, 0, 0, 0, System.Convert.ToInt32(value)); return length.Minutes + ":" + length.Seconds.ToString("D2");
  • 您也可以使用TimeSpan.FromMilliseconds Method。参数是 Double 类型。
  • @Kuraj 如果您使用的是 TimeSpan,那么您甚至不需要转换器。您可以只使用简单的字符串格式。
猜你喜欢
  • 2021-07-03
  • 1970-01-01
  • 2019-10-05
  • 1970-01-01
  • 2021-09-11
  • 1970-01-01
  • 1970-01-01
  • 2015-11-14
  • 1970-01-01
相关资源
最近更新 更多