鼠标悬停的WPF播放电影

时间:2009-01-19 21:09:00

标签: wpf video mouseover

当用户将鼠标指针放在元素上时,有没有办法使用WPF让视频元素开始播放?我想制作一个交互式数字资源,并希望当鼠标悬停在元素上时,可以播放电影剪辑,以便将它们带到电影部分。任何帮助都会很棒。

这将全部包含在Windows应用程序中。

2 个答案:

答案 0 :(得分:1)

如果您使用MediaElement播放视频,只需听取MouseEntered事件并致电Play()。

注意:必须将MediaElement的LoadedBehavior属性设置为Manual,才能以交互方式停止,暂停和播放媒体。

以下是一个例子:

在C#代码隐藏中:

public partial class Window1 : Window
{
    public Window1()
    {
        InitializeComponent();
    }

    private void mediaElement1_MouseEnter(object sender, MouseEventArgs e)
    {
        mediaElement1.Play();
    }

    private void mediaElement1_MouseLeave(object sender, MouseEventArgs e)
    {
        mediaElement1.Stop();
    }

    private void mediaElement1_Loaded(object sender, RoutedEventArgs e)
    {
        mediaElement1.Pause();
    }
}

在XAML中:

<Window x:Class="VideoTest.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="300" Width="300">
    <Grid>
        <MediaElement Margin="12" 
                      Name="mediaElement1" 
                      Source="mediaFile.avi"
                      LoadedBehavior="Manual"                      
                      MouseEnter="mediaElement1_MouseEnter"
                      MouseLeave="mediaElement1_MouseLeave"
                      Loaded="mediaElement1_Loaded"
                      />
    </Grid>
</Window>

答案 1 :(得分:0)

发现

的问题
<MediaElement Margin="12" 
                  Name="mediaElement1" 
                  Source="mediaFile.avi"
                  LoadedBehavior="Manual"                      
                  MouseEnter="mediaElement1_MouseEnter"
                  MouseLeave="mediaElement1_MouseLeave"
                  Loaded="mediaElement1_Loaded"
                  />

它似乎不喜欢

Loaded="mediaElement1_Loaded"

所以我在后面的代码中更改了我的Initialize以包含

mediaElement1.Pause();

它工作得很好。