虽然微软uwp官方已停止对传统媒体控件mediaElement的update,新控件为mediaPlayerElement和mediaPlayer[官方word:https://docs.microsoft.com/en-us/windows/uwp/design/controls-and-patterns/media-playback].
这里阐述的是传统媒体控件MediaElement和自定义进度条slider的绑定内容。(mediaPlayerElement是否也适用,小生没有实测)
首先写一个类,叫做控制器,之后在XAML里进行绑定
class ProgressConvert : 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);
}
}
据我所知,这个控制器是通用版的,需要时直接搬运。
直接在Page.Resources里调用,这里我需要引用命名空间,自己根据自己实际情况。
xmlns:modle="using:VideoPlayer.Modle"
<Page.Resources>
<ResourceDictionary>
<modle:ProgressConvert x:Key="progressConvert"/>
</ResourceDictionary>
</Page.Resources>
下面是MediaElement和Slider控件的绑定了
<MediaElement x:Name="main_mediaElement" AutoPlay="False" AreTransportControlsEnabled="False" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/>
<Slider x:Name="progress_slider" ManipulationMode="Rotate" Style="{StaticResource MediaSliderStyle}" Grid.Column="1" Minimum="0" IsThumbToolTipEnabled="False" VerticalAlignment="Center" Value="{Binding ElementName=main_mediaElement,Path=Position,Converter={StaticResource progressConvert},Mode=TwoWay}" Margin="10,0,10,-5"/>
这里直接搬用了我的源码,有些属性不用管,主要了解Binding这块。
MediaElement的AreTransportControlEnabled=False将禁用自带的播放控件,自带的当然是自动绑定的了,当想自定义播放控件时,可以使用这个方案。