DataTemplate
에 대해 VisualStates
을 입력하면 꽤 일반적인 문제입니다.VisualStateManager를 사용하는 datatemplate에서의 WPF 애니메이션
UserControl
로
FrameworkElement
을 사용하는 경우에만 있지만, 잘 작동
:
<DataTemplate x:Key="MyDataTemplate">
<Grid x:Name="rootgrid">
... Code the same as above...
</Grid>
</DataTemplate>
을 다음 :
<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
의 코드를 붙여 넣기 할 때 "MyDataTemplate"을 사용자 정의 요소 (클래스, ContentTemplate
종속성 속성 구현)에 적용하고이 경우 "집중"애니메이션 상태를 사용할 수 없습니다.
나는 VisualTree을 통해 "rootgrid"라는 그리드 객체를 얻고 이것을 사용하더라도 :
VisualStateManager.GoToState(rootgrid,"Focused",true);
아무런 변화가 없습니다 ... :(
질문이 구현 VisualStates
(애니메이션)를 사용하는 방법입니다 ? 비 FrameworkElement
개체에 대한 DataTemplate
에
당신이의 해결 되었습니까? 나는 똑같은 것을 궁금해하고 있었다. 데이터 템플릿에 시각적 상태를 사용할 수없는 경우가 있습니까? – McGarnagle
어쩌면 완전히 잘못 생각한 것 같지만, Ellipse와 같은 UIElement를 사용하여 쉽게이 작업을 수행 할 수있는 방법이 없다고 생각합니다. 따라서 Control에서 상속받은 클래스를 사용하고 자습서 또는 기사 중 하나에서 해당 클래스를 사용하는 방법을 참조해야합니다. 그게 내가 조언 할 수있는 전부 야, 미안. 사실 WPF에서 많은 경험이 없으므로 아마도이 기능을 수행하는 방법을 누군가에게 알려줄 수 있습니다. –