如何在silverlight中显示媒体元素中的时间?

时间:2011-04-25 09:57:26

标签: silverlight

如何显示正在Silverlight中的MediaElement控件中播放的视频文件的时间?

4 个答案:

答案 0 :(得分:2)

Position上有MediaElement个属性。此视频和源代码可以帮助您http://www.silverlight.net/learn/quickstarts/audioandvideo/

答案 1 :(得分:1)

最后我用这种方式解决了我的问题: 我使用Textblock控件并将文本属性绑定到MediaElement控件的Position属性,然后我使用IvalueConverter在TextBlock中显示适当的时间:

<TextBlock MinWidth="40" Text="{Binding ElementName=myMediaElement, Path=Position, Converter={StaticResource TimeConverterFormatter}}"/>

TimeConverterFormatter是一个将TimeSpan值转换为短时格式的类。因为MediaElement中的position属性显示的Timespan值类似于“0:00:00:00.0000000”,我想要的经过时间值如下:“00:00”

public class TimeConverterFormatter : IValueConverter
{
    #region IValueConverter Members
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        if (value.ToString().Length == 16)
            return value.ToString().Substring(3, 2) + ":" + value.ToString().Substring(6, 2);

        return value.ToString();
    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        throw new NotImplementedException();
    }

    #endregion
}

答案 2 :(得分:1)

我意识到这是一个古老的问题,但在WPF中你可以使用普通的StringFormat做你想做的事情:

<TextBlock Text="{Binding Position, ElementName=myMediaElement, 
    StringFormat={}{0:hh}:{0:mm}, FallbackValue=00:00, Mode=OneWay}" />

我无法确定你是想要小时,分钟还是分钟和秒钟,所以这是后者:

<TextBlock Text="{Binding Position, ElementName=myMediaElement, 
    StringFormat={}{0:mm}:{0:ss}, FallbackValue=00:00, Mode=OneWay}" />

我无法保证它在Silverlight中可以正常工作。

答案 3 :(得分:0)

不确定Silverlight,但这应该可以显示mm:ss。

lblLength.Content = String.Format("{0:mm}:{0:ss}", mediaElement.Position);