Создайте поведение Visualize-Touch с помощью WPF

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

Текущий метод похож на это:

1- Я поместил этот холст где-то в моем файле XAML контроля пользователя.

<Viewbox Grid.ColumnSpan="2" Stretch="Fill">
        <Canvas Opacity="0.1" Height="60" Width="250" ClipToBounds="True">

            <Ellipse x:Name="touchEllipse" Fill="{Binding Foreground, ElementName=UserControl}" HorizontalAlignment="Left" Height="80" VerticalAlignment="Top" Width="80" RenderTransformOrigin="0.5,0.5">
                <Ellipse.RenderTransform>
                    <TransformGroup>
                        <ScaleTransform ScaleY="0" ScaleX="0"/>
                        <SkewTransform/>
                        <RotateTransform/>
                        <TranslateTransform x:Name="_touchTrans"/>
                    </TransformGroup>
                </Ellipse.RenderTransform>
            </Ellipse>
        </Canvas>
    </Viewbox>

2- Тогда я слушаю MouseUp событие UserControl и начните следующую раскадровку с помощью кода C#:

<Storyboard x:Key="touchStoryboard" FillBehavior="Stop" x:Name="touchStoryboard">
        <!-- some double animations...... -->
    </Storyboard>

Проблема здесь:

Я пытаюсь создать Behavior которые можно прикрепить к любому FrameworkElement и слушать его MouseUp событие и сделать то же самое...

Я уже добился определенного прогресса (ну... не так много:D). вот мой класс по поведению... Как я могу наложить это Viewbox на AssociatedObject и назвать ту же раскадровку?

Или вы предлагаете другой подход к этой проблеме?

 public class ShowTouchBehaviour : Behavior<FrameworkElement>
{
    protected override void OnAttached()
    {
        AssociatedObject.MouseUp += AssociatedObjectOnMouseUp;
        base.OnAttached();
    }

    protected override void OnDetaching()
    {
        AssociatedObject.MouseUp -= AssociatedObjectOnMouseUp;
        base.OnDetaching();
    }

    private void AssociatedObjectOnMouseUp(object sender, RoutedEventArgs routedEventArgs)
    {
        FrameworkElement e = sender as FrameworkElement;

        if (!e.IsEnabled)
            return;

        // now what?
    }

}

Заранее спасибо.

0 ответов

Другие вопросы по тегам