当您尝试输入VisualStates
一些DataTemplate
.
下面的代码可以正常工作,但前提是我使用 a FrameworkElement
,例如 custom UserControl
:
<UserControl>
...namespaces goes here...
<Grid x:Name="rootgrid">
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="States">
<Storyboard x:Key="Focused">
<ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(Shape.Fill).(SolidColorBrush.Color)" Storyboard.TargetName="ellipse">
<EasingColorKeyFrame KeyTime="0:0:0.1" Value="#FFE90B0B"/>
</ColorAnimationUsingKeyFrames>
</Storyboard>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<Ellipse x:Name="ellipse"
Width="26"
Height="26"
Fill="Yellow"
SnapsToDevicePixels="True"
Stretch="Fill"
Stroke="Black"
StrokeThickness="2">
<Ellipse.RenderTransform>
<TransformGroup>
<ScaleTransform/>
<SkewTransform/>
<RotateTransform/>
<TranslateTransform/>
</TransformGroup>
</Ellipse.RenderTransform>
</Ellipse>
</Grid>
</UserControl>
但是当我尝试将代码粘贴到DataTemplate
:
<DataTemplate x:Key="MyDataTemplate">
<Grid x:Name="rootgrid">
... Code the same as above...
</Grid>
</DataTemplate>
然后我将“MyDataTemplate”应用于我的自定义元素(实现ContentTemplate
依赖属性的类),在这种情况下我不能使用动画状态“Focused”。
即使我通过 VisualTree 得到一个名为“rootgrid”的网格对象并使用它:
VisualStateManager.GoToState(rootgrid,"Focused",true);
什么都没发生 ... :(
问题是如何为非对象使用VisualStates
(动画)实现?DataTemplate
FrameworkElement