Wie kann ich die verstrichene Zeit einer Videodatei anzeigen, die in einem MediaElement-Steuerelement in Silverlight abgespielt wird?
Antworten
Zu viele Anzeigen?Es gibt eine Position
Eigenschaft auf der MediaElement
. Dieses Video und der Quellcode sollten Ihnen dabei helfen http://www.silverlight.net/learn/quickstarts/audioandvideo/
Endlich habe ich mein Problem auf diese Weise gelöst: Ich verwende ein Textblock-Steuerelement und binde die Texteigenschaft an die Positionseigenschaft des MediaElement-Steuerelements, dann verwende ich einen IvalueConverter, um die entsprechende Zeit im TextBlock anzuzeigen:
<TextBlock MinWidth="40" Text="{Binding ElementName=myMediaElement, Path=Position, Converter={StaticResource TimeConverterFormatter}}"/>
TimeConverterFormatter ist eine Klasse für konvertieren TimeSpan Wert in kurze Zeit-Format. weil Position Eigenschaft in MediaElement zeigen eine Zeitspanne Wert wie zu "0:00:00:00.0000000" und ich möchte verstrichene Zeit Wert wie zu diesem: "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
}
Ich weiß, dass dies eine alte Frage jetzt ist, aber in WPF können Sie einfach eine normale StringFormat
zu tun, was Sie wollen:
<TextBlock Text="{Binding Position, ElementName=myMediaElement,
StringFormat={}{0:hh}:{0:mm}, FallbackValue=00:00, Mode=OneWay}" />
Ich konnte nicht herausfinden, ob Sie Stunden und Minuten oder Minuten und Sekunden wollten, daher hier letzteres:
<TextBlock Text="{Binding Position, ElementName=myMediaElement,
StringFormat={}{0:mm}:{0:ss}, FallbackValue=00:00, Mode=OneWay}" />
Ich kann allerdings nicht garantieren, dass es in Silverlight funktioniert.