WPF利用ContextMenu实现右键菜单
1、可以先详细了解下“WPF利用MediaElement编写视频播放器”。完成WPF实现自制视频播放器的创建,在此基础上实现制视频播放器增加右键菜单的功能。也可以打开VS,选择Visual C#模板创建一个新WPF应用程序,直接复制后续步骤中的的完整代码。

3、在MainWindow.xaml.cs页面中添加如下代码:using System挢旗扦渌;using System.Colle艘早祓胂ctions.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows;using System.Windows.Controls;using System.Windows.Data;using System.Windows.Documents;using System.Windows.Input;using System.Windows.Media;using System.Windows.Media.Imaging;using System.Windows.Navigation;using System.Windows.Shapes;namespace MyMedia{ /// <summary> /// MainWindow.xaml 的交互逻辑 /// </summary> public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); this.mediaElement1.LoadedBehavior = MediaState.Manual; } private void G_DragEnter(object sender, DragEventArgs e) { if (e.Data.GetDataPresent(DataFormats.FileDrop)) e.Effects = DragDropEffects.All; else e.Effects = DragDropEffects.None; } bool mediaElement1Play = false; private void G_DragOver(object sender, DragEventArgs e) { string[] s = (string[])e.Data.GetData(DataFormats.FileDrop, false); this.mediaElement1.Source = new Uri(s[0]); mediaElement1.Play(); mediaElement1.Volume = 1; mediaElement1Play = true; } private void GridDrag_ContextMenuOpening(object sender, ContextMenuEventArgs e) { bool b = this.mediaElement1.HasVideo; int count = GridDrag.ContextMenu.Items.Count; for (int i = 1; i < count; i++) { MenuItem m = GridDrag.ContextMenu.Items[i] as MenuItem; if (m != null) m.IsEnabled = b; } if (this.mediaElement1Play) M播放.Header = "暂停"; else M播放.Header = "播放"; } private void M视频_Click(object sender, RoutedEventArgs e) { //这里我们可以采用拖动视频文件进行播放,该文主要讲解ContextMenu右键菜单的使用,为缩短文章篇幅,不增加代码。 } private void M播放_Click(object sender, RoutedEventArgs e) { if (this.mediaElement1Play) this.mediaElement1.Pause(); else this.mediaElement1.Play(); this.mediaElement1Play = !this.mediaElement1Play; } }}

5、因为我们没有添加按钮打开视频功能,这里我们采用拖动一个可以播放的视频文件放置到软件窗口中,视频将开始自动播放。

7、以上5个步骤是WPF采用ContextMenu实现右键菜单的一个简单例子。该自制播放器实现了右键菜单打开时菜单样式显示控制,以及自制播放器的一个播放暂停控制,如果需要视频加载文件、全屏、快进、快退、静音等功能,则还需要增加其他代码。