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

2、在MainWindow.xaml页面中添加如下代码:
<Window x:Class="MyMedia.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="我的播放器-拖动文件执行" Height="350 <Grid >
<MediaElement Name="mediaElement1" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Stretch="Fill" IsMuted="False" />
<Grid x:Name="GridDrag" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" AllowDrop="True" DragEnter="G_DragEnter" DragOver="G_DragOver" Background="#02FFFFFF" ContextMenuOpening="GridDrag_ContextMenuOpening" >
<Grid.ContextMenu >
<ContextMenu>
<MenuItem Name="M视频" Header="选择视频文件(_O)" Click="M视频_Click" />
<Separator/>
<MenuItem Name="M全屏" IsEnabled="False" Header="全屏"/>
<Separator/>
<MenuItem Name="M播放" IsEnabled="False" Header="播放" Click="M播放_Click" />
<MenuItem Name="M快进" IsEnabled="False" Header="快进"/>
<Separator/>
<MenuItem Name="M静音" IsEnabled="False" Header="静音" />
<MenuItem Name="M音量" IsEnabled="False" Header="音量+" />
<MenuItem Name="M音量2" IsEnabled="False" Header="音量-" />
</ContextMenu>
</Grid.ContextMenu>
</Grid>
</Grid>
</Window>

3、在MainWindow.xaml.cs页面中添加如下代码:
using System;
using System.Collections.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;
}
}
}

4、编译代码,生成解决方案。编译成功后,按F5执行。这时,我们可以移动鼠标到视频窗口中任意位置,点击鼠标右键,将弹出右键菜单。我们会发现很多菜单项是灰色不可执行的,这说明我们在WPF中实现了右键菜单功能。

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

6、视频播放后,我们再点击鼠标右键,将弹出另一种样式的右键菜单,该右键菜单可以控制视频的暂停和播放了。

7、以上5个步骤是WPF采用ContextMenu实现右键菜单的一个简单例子。该自制播放器实现了右键菜单打开时菜单样式显示控制,以及自制播放器的一个播放暂停控制,如果需要视频加载文件、全屏、快进、快退、静音等功能,则还需要增加其他代码。
声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
阅读量:191
阅读量:113
阅读量:66
阅读量:85
阅读量:132