WPF Play Movie при наведении мыши - PullRequest
3 голосов
/ 20 января 2009

Есть ли способ использовать WPF, чтобы заставить элемент видео начать воспроизведение, когда пользователь помещает туда указатель мыши над элементом? Я хочу создать интерактивный цифровой ресурс и хочу, чтобы ролик фильма воспроизводился при наведении указателя мыши на элемент, чтобы перенести их в раздел фильма. Любая помощь будет великолепна.

Это все будет содержаться в приложении Windows.

Ответы [ 2 ]

1 голос
/ 20 января 2009

Если вы используете MediaElement для воспроизведения видео, просто прослушайте событие MouseEntered и позвоните Play ().

Примечание. Для свойства MediaElement LoadedBehavior необходимо установить значение «Вручную», чтобы иметь возможность интерактивно останавливать, приостанавливать и воспроизводить мультимедиа.

Вот пример:

В коде 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>
0 голосов
/ 20 января 2009

Обнаружена проблема с

<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();

И все работает отлично.

...