Создайте поведение 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?
}
}
Заранее спасибо.