3

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

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

4

2 回答 2

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>
于 2009-01-19T21:40:03.270 回答
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();

它工作得很好。

于 2009-01-20T14:47:50.607 回答