Добавить пользовательский созданный EventHandler в XAML, WPF MVVM - PullRequest
0 голосов
/ 30 апреля 2020

Я создал пользовательское событие в моей ViewModel.

Это не функция, это EventHandler, такой как MouseLeave, MouseEnter и др. c. Вот что мне нужно в моей реализации.

Вот оно:

public event EventHandler SpinEllipses;

Теперь мне нужно назначить его в xaml, но я не знаю как. И Bindind не работает в этом случае. Я попробовал это. У меня есть эта StoryBoard, которая срабатывает, когда происходит событие MouseEnter. Но я хочу заменить это событие MouseEnter на мое событие SpinEllipses. Как я могу сделать это способом MVVM?

Thx.

<EventTrigger RoutedEvent="MouseEnter">
                                <BeginStoryboard>
                                    <Storyboard>
                                        <DoubleAnimation
                                    Storyboard.TargetName="MyAnimatedTransform"
                                    Storyboard.TargetProperty="(RotateTransform.Angle)"
                                    From="0.0" To="360" Duration="0:0:1" RepeatBehavior="Forever"/>
                                    </Storyboard>
                                </BeginStoryboard>
                            </EventTrigger>

1 Ответ

0 голосов
/ 30 апреля 2020

Хорошо, ребята. Я отказался от этой идеи. Моя цель состояла в том, чтобы иметь возможность вращать мой Sllipse и отключить это вращение. Используя кнопку или что-нибудь.

Чтобы сделать это sh, я создал собственный элемент управления Ellipse и добавил анимацию внутри этого пользовательского элемента управления. Сделав это, я получил то, что хочу.

В этой серии видеороликов рассказывалось, как создать собственный элемент управления

https://www.youtube.com/watch?v=-YJqoZFAGPA&list=PLA8ZIAm2I03gNGsQQYHmb7nK8VIt9EI9u&index=1

Важно понимать, как его создать.

Чтобы повернуть мой эллипс, я использовал этот код:

var doubleAnimation = new DoubleAnimation(0, 360, new Duration(TimeSpan.FromSeconds(1)));
                var rotateTransform = new RotateTransform();
                ellipse.RenderTransform = rotateTransform;
                ellipse.RenderTransformOrigin = new Point(0.5, 0.5);
                doubleAnimation.RepeatBehavior = RepeatBehavior.Forever;
                rotateTransform.BeginAnimation(RotateTransform.AngleProperty, doubleAnimation);

Чтобы остановить вращение:

var rotateTransform = new RotateTransform();
                ellipse.RenderTransform = rotateTransform;
                ellipse.RenderTransformOrigin = new Point(0.5, 0.5);

И я вызываю свой пользовательский элемент управления в xaml следующим образом:

Обратите внимание, что я создал DependencyProperty, который является логическим, для остановки или запуска вращения

<Canvas Margin="50 50 50 50">
                <Customs:Ellipses SpinEllipse="{Binding Spin1, Mode=TwoWay}" />
            </Canvas>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...