У меня есть пользовательский нарисованный элемент управления Path с несколькими текстовыми блоками внутри, составляющими DataTemplate в Silverlight 4. Я использовал окно Animation в Expression Blend, чтобы создать простую анимацию, которую я могу «воспроизвести» и увидеть работу OK в Blend.
Я хочу, чтобы эта анимация запускалась при событии '_MouseEnter ()' (VB.NET). Я хочу запустить метод .Begin для анимации.Кажется, достаточно просто.
Однако во время выполнения ничего не происходит.Я помещаю точку останова в событие _MouseEnter и, конечно же, она входит в событие при входе мыши в элемент управления, запускает строку кода, чтобы начать анимацию, но ничего не происходит.Никаких исключений, никакой анимации, ничего.
Может кто-нибудь сказать мне, что мне здесь не хватает, так как я знаю, что настоящая анимация работает , она просто не работает во время выполнения?XAML и событие приведены ниже (удалены некоторые свойства стиля в Texblocks и т. Д., Чтобы их было легче читать):
<DataTemplate x:Key="MyItemTemplate">
<Grid Width="50" Height="80" Opacity="0.9"
RenderTransformOrigin="0.5,0.5"
ToolTipService.ToolTip="{Binding ItemName}">
<Grid.Resources>
<Storyboard x:Name="MyItemTemplateAnimate">
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(Shape.Fill).(GradientBrush.GradientStops)[4].(GradientStop.Offset)"
Storyboard.TargetName="path">
<EasingDoubleKeyFrame KeyTime="0:0:0.3" Value="0.296"/>
<EasingDoubleKeyFrame KeyTime="0:0:0.4" Value="0.384"/>
<EasingDoubleKeyFrame KeyTime="0:0:0.5" Value="0.475"/>
<EasingDoubleKeyFrame KeyTime="0:0:0.6" Value="0.529"/>
<EasingDoubleKeyFrame KeyTime="0:0:0.7" Value="0.587"/>
<EasingDoubleKeyFrame KeyTime="0:0:0.8" Value="0.652"/>
<EasingDoubleKeyFrame KeyTime="0:0:0.9" Value="0.582"/>
<EasingDoubleKeyFrame KeyTime="0:0:1" Value="0.523"/>
<EasingDoubleKeyFrame KeyTime="0:0:1.1" Value="0.5"/>
/DoubleAnimationUsingKeyFrames>
</Storyboard>
</Grid.Resources>
<Grid.RenderTransform>
<CompositeTransform Rotation="180"/>
</Grid.RenderTransform>
<Path x:Name="path" Data="M 0,0 L 50,0 50,50 25,80 0,50 0,0" Stroke="Wheat" StrokeThickness="2">
<Path.Fill>
<LinearGradientBrush EndPoint="-0.419,0.662" MappingMode="RelativeToBoundingBox" StartPoint="1.051,-0.137">
<GradientStop Color="#FF250A0A" Offset="1"/>
<GradientStop Color="#FF250A0A"/>
<GradientStop Color="#FF501616" Offset="0.725"/>
<GradientStop Color="#FF501616" Offset="0.275"/>
<GradientStop Color="#FF9F4C4C" Offset="0.5"/>
</LinearGradientBrush>
</Path.Fill>
</Path>
<TextBlock x:Name="TextBlock1"
</TextBlock>
<TextBlock x:Name="TextBlock2"
</TextBlock>
</Grid>
</DataTemplate>
Код, который использует DataTemplate:
<m:MapItemsControl x:Name="MyItems" ItemTemplate="{StaticResource MyItemTemplate}"/>
А вотсобытие VB.NET:
Private Sub MyItems_MouseEnter(sender As Object, e As System.Windows.Input.MouseEventArgs) Handles MyItems.MouseEnter
MyItemTemplateAnimate.Begin()
End Sub