當您試圖爲某些DataTemplate
輸入VisualStates
時,這是很常見的問題。使用VisualStateManager的數據模板中的WPF動畫
下面的代碼工作正常,但只有當我使用FrameworkElement
,如自定義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
依賴項屬性的類),並且在這種情況下我無法使用動畫狀態「聚焦」。
即使我會得到一個名爲 「rootgrid」 網格物體通過的VisualTree並使用此:
VisualStateManager.GoToState(rootgrid,"Focused",true);
什麼也沒有發生... :(
的問題是如何使用VisualStates
(動畫)實施?在DataTemplate
非FrameworkElement
對象
你找到解決這個?我想知道同樣的事情。也許它不可能使用數據模板的可視狀態? – McGarnagle
也許我完全錯了,但我認爲有沒有簡單的方法來使用像Ellipse這樣的UIElement。所以你應該可以使用從Control繼承的類,並看看教程或文章之一如何使用它們。這就是我可以建議的,對不起。其實我沒有太多的WPF經驗,所以也許有人會告訴我們如何做到最好。 –