我寫在Windows Phone上的音頻應用程序8.我已經創建了一個的MediaElement和尋求杆(滑)後:的Windows 8手機滑蓋綁定工作,只有點擊
<MediaElement x:Name="player" CurrentStateChanged="GetTrackDuration" />
<Slider x:Name="playerSeekBar" Value="{Binding ElementName=player, Path=Position,
Mode=TwoWay, Converter={StaticResource PositionConverter}}" SmallChange="1" LargeChange="1"/>
這是我的轉換器代碼:
public class PositionConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
double position = 0;
TimeSpan timespan = TimeSpan.Parse(value.ToString());
position = timespan.TotalSeconds;
return position;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return TimeSpan.FromSeconds((double)value);
}
}
這裏是CurrentStateChanged事件代碼:
private void GetTrackDuration(object sender, RoutedEventArgs e)
{
var player = (MediaElement)sender;
if (player.CurrentState == System.Windows.Media.MediaElementState.Playing)
playerSeekBar.Maximum = player.NaturalDuration.TimeSpan.TotalSeconds;
}
這一切似乎工作確定,但牛逼這裏是綁定到滑塊的一個問題 - 它不會更新,直到我點擊應用程序內的某個地方 - 我的意思是我可以點擊一個沒有與滑塊或媒體元素連接的按鈕或空的空間。我點擊滑塊後正在更新,一切正常。順便說一句,音樂正常播放 - 即使在滑塊沒有被更新時開始。我試圖在互聯網上看,但我不知道該問什麼,這就是爲什麼我要求你尋求幫助。如果有人知道我可以在哪裏搜索解決方案,我將非常感激!:)
感謝您提前給予您的幫助!
非常感謝您的回答!我嘗試使用你所說的話,但是出現了一個小問題 - 當我將CurrentStateChanged中的事件更改爲MediaOpen時,那麼我的滑塊移動速度太快,並且很快就會結束。目前我不知道爲什麼它會這樣。仍然感謝您的幫助!:) –
@RomanPylypets這很奇怪,因爲我檢查它應該工作。請檢查調試模式傳遞給Slider.Maximum的值。 – Romasz
@RomanPylypets我已經添加了另一種管理滑塊的方式 - 如果你不需要綁定。 – Romasz