WPF MediaElement Opacity не устанавливается после выполнения Storyline - PullRequest
0 голосов
/ 02 февраля 2019

Я использую DoubleAnimation и Storyboard для управления Opacity из MediaElement.Сама анимация работает нормально, но если я позвоню Disappear и playVid через несколько секунд, Opacity из player останется 0!В чем проблема?

public void playVid(string source, bool isMainVid)
{
    player.Opacity = 1;
    player.Play(); //player.Opacity is 0 here!
}

public void Disappear()
{
    DoubleAnimation fadeOut = new DoubleAnimation
    {
        To = 0,
        Duration = new Duration(TimeSpan.FromMilliseconds(1000))
    };
    fadeOut.Completed += (s, e) =>
    {
        player.Stop();
    };
    var storyboard = new Storyboard();
    storyboard.Children.Add(fadeOut);
    Storyboard.SetTargetName(fadeOut, player.Name);
    Storyboard.SetTargetProperty(fadeOut, new PropertyPath(OpacityProperty));
    storyboard.Begin(mainGrid, HandoffBehavior.SnapshotAndReplace); //mainGrid is player's parent
}

1 Ответ

0 голосов
/ 02 февраля 2019

Используйте FillBehavior, равное Stop, но также установите Opacity вашего плеера на конечное значение непрозрачности (в обработчике Completed).В противном случае оно будет сброшено до значения до анимации.

var fadeOut = new DoubleAnimation
{
    To = 0,
    Duration = new Duration(TimeSpan.FromMilliseconds(1000)),
    FillBehavior = FillBehavior.Stop
};

fadeOut.Completed += (s, e) =>
{
    player.Stop();
    player.Opacity = 0;
};

См. Этот пост для других подходов.

...