我已經創建了一個樣本爲你的描述。 我將Grid
設置爲頁面的根面板,並將它分成兩行。我在第一行放置了MediaPlayerElement
,並在第二行放置了GridView
。
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Grid HorizontalAlignment="Center" VerticalAlignment="Center">
<MediaPlayerElement
x:Name="mediaPlayerElement"
Height="150"
Margin="0,0,0,10"
IsItemClickEnabled="True"
HorizontalAlignment="Stretch"
AreTransportControlsEnabled="True"
AutoPlay="True" />
</Grid>
<Grid Grid.Row="1">
<GridView
x:Name="VideoGridView"
Margin="10,10,0,10"
HorizontalAlignment="Stretch"
IsItemClickEnabled="True"
ItemClick="VideoGridView_ItemClick"
ItemsSource="{x:Bind videoItems}">
<GridView.ItemTemplate>
<DataTemplate x:DataType="data:VideoItem">
<Grid
Width="100"
Height="150"
Background="LightGray">
<Grid.RowDefinitions>
<RowDefinition Height="120" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Image
Name="VideoProviewImage"
Grid.Row="0"
Source="{x:Bind imageSource}"
Stretch="UniformToFill" />
<TextBlock
Name="VideoTitle"
Grid.Row="1"
Height="30"
Text="{x:Bind videoTitle}"
TextAlignment="Center"
TextWrapping="Wrap" />
</Grid>
</DataTemplate>
</GridView.ItemTemplate>
</GridView>
</Grid>
然後我做了一個模型數據結合
public class VideoItem
{
public string imageSource { get; set; }
public string videoUri { get; set; }
public string videoTitle { get; set; }
}
public static class VideoManager
{
public static ObservableCollection<VideoItem> getVideos()
{
var videoItems = new ObservableCollection<VideoItem>();
videoItems.Add(new VideoItem() { imageSource = "/Assets/image.jpg", videoUri = "https://mediaplatstorage1.blob.core.windows.net/windows-universal-samples-media/elephantsdream-clip-h264_sd-aac_eng-aac_spa-aac_eng_commentary-srt_eng-srt_por-srt_swe.mkv", videoTitle = "First" });
videoItems.Add(new VideoItem() { imageSource = "/Assets/image.jpg", videoUri = "https://mediaplatstorage1.blob.core.windows.net/windows-universal-samples-media/elephantsdream-clip-h264_sd-aac_eng-aac_spa-aac_eng_commentary.mp4", videoTitle = "Second" });
videoItems.Add(new VideoItem() { imageSource = "/Assets/image.jpg", videoUri = "https://mediaplatstorage1.blob.core.windows.net/windows-universal-samples-media/multivideo-with-captions.mkv", videoTitle = "Third" });
videoItems.Add(new VideoItem() { imageSource = "/Assets/image.jpg", videoUri = "https://mediaplatstorage1.blob.core.windows.net/windows-universal-samples-media/sintel_trailer-480p.mp4", videoTitle = "Fourth" });
return videoItems;
}
}
點擊GridView的項目時,mediaPlayerElement會自動播放。
private void VideoGridView_ItemClick(object sender, ItemClickEventArgs e)
{
var vedio = e.ClickedItem as VideoItem;
var item = new MediaPlaybackItem(MediaSource.CreateFromUri(new Uri(vedio.videoUri)));
mediaPlayerElement.Source = item;
}

下面創建您的視頻幀的GridView。將MediaElement的源代碼綁定到GridView的SelectionChanged事件,每次點擊一個項目時,Video都會播放。 – AVK