C# WinUI 3アプリを作っていく途中で、調べたことを忘録的に投稿します。今回はWinUI3プロジェクトで、MediaPlayerElementに読み込んだ動画をコンテキストメニューから操作したい場合の対処法です。
コンテキストメニューを追加
[MediaPlayerElement]コントロールにコンテキストメニューを追加します。
<MediaPlayerElement Name="GridPlayer" Source="{Binding MediaPath}">
<MediaPlayerElement.ContextFlyout>
<MenuFlyout>
<MenuFlyoutItem Text="再生" Name="PlayMenu">
<MenuFlyoutItem.Icon>
<FontIcon Glyph="" FontFamily="Segoe MDL2 Assets" />
</MenuFlyoutItem.Icon>
</MenuFlyoutItem>
<MenuFlyoutItem Text="一時停止" Name="PauseMenu">
<MenuFlyoutItem.Icon>
<FontIcon Glyph="" FontFamily="Segoe MDL2 Assets" />
</MenuFlyoutItem.Icon>
</MenuFlyoutItem>
</MenuFlyout>
</MediaPlayerElement.ContextFlyout>
</MediaPlayerElement>
実行すると、動画ファイルを読み込んだ[MediaPlayerElement]をマウスで右クリックすると2つのコンテキストメニューが表示されます。
イベントプロシージャの追加
追加したコンテキストメニューにイベントを追加します。
<MediaPlayerElement Name="GridPlayer" Source="{Binding MediaPath}">
<MediaPlayerElement.ContextFlyout>
<MenuFlyout>
<MenuFlyoutItem Text="再生" Name="PlayMenu" Click="PlayMenu_Click">
<MenuFlyoutItem.Icon>
<FontIcon Glyph="" FontFamily="Segoe MDL2 Assets" />
</MenuFlyoutItem.Icon>
</MenuFlyoutItem>
<MenuFlyoutItem Text="一時停止" Name="PauseMenu" Click="PauseMenu_Click">
<MenuFlyoutItem.Icon>
<FontIcon Glyph="" FontFamily="Segoe MDL2 Assets" />
</MenuFlyoutItem.Icon>
</MenuFlyoutItem>
</MenuFlyout>
</MediaPlayerElement.ContextFlyout>
</MediaPlayerElement>
追加した、それぞれのイベントプロシージャにコードを追加してます。
[MediaPlayerElement]クラスには、動画の再生や一時停止を操作するメソッドが無いので、[MediaPlayerElement.MediaPlayer]プロパティでインスタンスを取得して、[Play]や[Pause]メソッドを利用します。
private void PlayMenu_Click(object sender, RoutedEventArgs e)
{
MenuFlyoutItem currentitem = sender as MenuFlyoutItem;
MediaPlayerElement mpe = currentitem.FindName("GridPlayer") as MediaPlayerElement;
mpe.MediaPlayer.Play();
}
private void PauseMenu_Click(object sender, RoutedEventArgs e)
{
MenuFlyoutItem currentitem = sender as MenuFlyoutItem;
MediaPlayerElement mpe = currentitem.FindName("GridPlayer") as MediaPlayerElement;
mpe.MediaPlayer.Pause();
}
実行して、それぞれのコンテキストメニューで読み込まれた動画の[再生]や[一時停止]をの操作が可能です。
まとめ
今回は短い記事ですが、Visual StudioのWinUI3プロジェクトで、MediaPlayerElementに読み込んだ動画をコンテキストメニューから操作したい場合の手順について紹介しました。
WinUI 3アプリで[MediaPlayerElement]で再生されている動画をコンテキストメニューから操作したい人の参考になれば幸いです。
スポンサーリンク
最後までご覧いただき、ありがとうございます。