2011-04-25 69 views

回答

1

最後我解決我的問題是這樣的: 我使用TextBlock控件和綁定文本屬性來定位MediaElement控件的屬性,然後我用的IValueConverter顯示在適當的時候TextBlock:

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

TimeConverterFormatter是將TimeSpan值轉換爲短時間格式的類。因爲在MediaElement的位置屬性顯示時間跨度值像「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 
} 
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中工作。

+0

這有效。 – 2014-08-05 18:32:32

0

不確定Silverlight,但這應該可以顯示mm:ss。

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