昨天有人問Slider 控件怎么控制MediaElement的播放進度沥潭,現(xiàn)在簡單介紹一下。
1嬉挡、實現(xiàn)原理:
Slider拖動時钝鸽,Value值改變,MediaElement播放時庞钢,Position值改變拔恰。所以,只需將Slider的Value屬性和MediaElement的Position屬性進行綁定即可基括。
2颜懊、實現(xiàn)方法:
Slider的Value屬性是double類型的,而MediaElement的Position屬性是Timespan類型的风皿,要綁定這兩種不同類型的的話河爹,就要用到Converter了,即值轉(zhuǎn)換器桐款。關(guān)于值轉(zhuǎn)換器咸这,可以百度,或者看IT追夢圓我寫的這篇文章:數(shù)據(jù)綁定——值轉(zhuǎn)換器 的簡單使用魔眨。
3媳维、實現(xiàn)過程:
寫一個值轉(zhuǎn)換器類:
class MusicConverter : IValueConverter
? ? {
? ? ? ? public object Convert(object value, Type targetType, object parameter, string language)
? ? ? ? {
? ? ? ? ? ? return ((TimeSpan)value).TotalSeconds;
? ? ? ? }
? ? ? ? public object ConvertBack(object value, Type targetType, object parameter, string language)
? ? ? ? {
? ? ? ? ? ? return TimeSpan.FromSeconds((double)value);
? ? ? ? }
? ? }
這里注意的是,我是在Slider的Value屬性上綁定Position的遏暴,這樣的話侄刽,這個Value就是TimeSpan類型的,我們將它轉(zhuǎn)為double類型朋凉,所以直接返回它的TotalSeconds州丹,即總秒數(shù)即可。
下來杂彭,回到View界面:實現(xiàn)如下綁定墓毒。
到這里,還沒完盖灸,因為我們需要將Slider的Value值和MediaElement播放的總秒數(shù)對應起來蚁鳖,這樣才能實現(xiàn)百分比進度。所以赁炎,需要獲取媒體播放的總時長,要注意的是,播放時長需要在MediaElement的MediaOpened事件中獲取徙垫,因為在這個事件觸發(fā)之前讥裤,系統(tǒng)是獲取不到播放時長的。在該事件中將Slider的Maximum和播放總時間對應起來即可姻报。
private void me_MediaOpened(object sender, RoutedEventArgs e)
? ? ? ? {
? ? ? ? ? sld.Maximum = me.NaturalDuration.TimeSpan.TotalSeconds;
? ? ? ? }
這樣綁定就完成了己英。拖動Slider,實現(xiàn)播放相應進度吴旋。喜歡uwp開發(fā)的同學可加群:193148992 共同學習交流损肛。