DoubleAnimation WPF Storyboard ведет себя неожиданно - PullRequest
1 голос
/ 26 марта 2019

Я использую раскадровку WPF, чтобы сдвинуть окно из правого угла экрана и затем скрыть его снова.

У меня три проблемы:

  1. Если вы ловите окно, которое в данный момент скользит вправо, оно замедляется.
  2. Иногда (очень редко, поэтому трудно найти причину) окно только скрывает свою половину, и анимация останавливается. Если вы войдете в окно мышью и снова уйдете, оно скрывает все остальное.
  3. Иногда, когда я достигаю края экрана, чтобы показать окно, какое-то время ничего не происходит, а затем окно очень быстро перемещается в правильное положение.

MouseOnEdge - это мое пользовательское событие, которое запускается, когда мышь достигает правого угла экрана.

Это мой код XAML:

<local:CustomWindow.Triggers>
    <EventTrigger RoutedEvent="local:CustomWindow.CustomMouseLeave">
        <BeginStoryboard>
            <Storyboard Name="SlideWindowOff">
                <DoubleAnimation 
                Storyboard.TargetName="ShellViewWindow" Storyboard.TargetProperty="Left"
                Duration="0:0:0.75"
                AccelerationRatio="0.5"
                From="{Binding WindowLeft}"
                To="{Binding WindowLeftHidden}"/>
            </Storyboard>
        </BeginStoryboard>
    </EventTrigger>
    <EventTrigger RoutedEvent="local:CustomWindow.MouseOnEdge">
        <BeginStoryboard>
            <Storyboard Name="SlideWindowOn">
                <DoubleAnimation 
                Storyboard.TargetName="ShellViewWindow" Storyboard.TargetProperty="Left"
                Duration="0:0:0.75"
                AccelerationRatio="0.5"
                From="{Binding WindowLeft}"
                To="{Binding WindowLeftUnhidden}"/>
            </Storyboard>
        </BeginStoryboard>
    </EventTrigger>
</local:CustomWindow.Triggers>

Почему что-то подобное происходит? Основная проблема здесь в том, что раскадровка скрывает только половину окна, и это будет самой большой проблемой для пользователей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...