내 ViewModel의 속성 변경을 기반으로 간단한 (생각합니다) 애니메이션 효과를 만들려고합니다. 대상이 Window에서 상속받은 사용자 지정 컨트롤의 컨트롤 템플릿에서 특정 텍스트 블록이되도록하고 싶습니다.WPF : 애니메이션 대상 선택
내가 본 적이있는 기사 예제에서 DataTrigger가이를 수행하는 가장 쉬운 방법입니다. Window.Triggers는 DataTriggers를 지원하지 않으므로 스타일에서 트리거를 적용하려고했습니다. 현재 문제는 TextBlock (또는 다른 자식 컨트롤)을 대상으로 할 수 없다는 것입니다. 애니메이션이 전체 창 배경에 적용된다는 것은 어떻게됩니까?
StoryBoard.Target을 완전히 벗어나면 효과가 완전히 동일합니다.
잘못된 구문을 사용하는 것이 올바른 방법입니까, 아니면이를 수행하는 더 쉬운 방법이 있습니까?
<Style x:Key="MyWindowStyle" TargetType="{x:Type Window}">
<Setter Property="Template" Value="{StaticResource MyWindowTemplate}"/>
<Style.Triggers>
<DataTrigger Binding="{Binding ChangeOccurred}" Value="True">
<DataTrigger.EnterActions>
<BeginStoryboard>
<Storyboard BeginTime="00:00:00" Duration="0:0:2" Storyboard.Target="{Binding RelativeSource={RelativeSource AncestorType=TextBlock}}"
Storyboard.TargetProperty="(Background).(SolidColorBrush.Color)">
<ColorAnimation FillBehavior="Stop" From="Black" To="Red" Duration="0:0:0.5" AutoReverse="True"/>
</Storyboard>
</BeginStoryboard>
</DataTrigger.EnterActions>
</DataTrigger>
</Style.Triggers>
</Style>
업데이트
또한 내가 TextBlock의 이름을 지정하고 (Timores가 제안) StoryBoard.TargetName를 통해 그것을 참조하기 위해 시도하고, 오류가 "에서 targetName 속성이 설정 될 수있어 언급이 있으시면 스타일 세터. "
원하는 애니메이션 타겟이 정확히 무엇입니까? 당신은 * "사용자 정의 컨트롤의 컨트롤 템플릿에있는 특정 텍스트 블록"*을 말한 다음 사용자 정의 컨트롤이 아닌'Window' 스타일을 만듭니다. 애니메이션 타겟이 포함 된 코드를 제공 할 수 있습니까? Window가 TextBlock 타입의 조상을 가질 것으로 기대하지 않기 때문에 위의 대상 바인딩이 작동하지 않아야합니다. 이것이 가능합니까? – gehho
죄송합니다. 설명하기가 어렵습니다. 커스텀 컨트롤은 윈도우에서 파생 된 윈도우입니다. 셋업/스타일은 다른 사람이 만들었으므로이 애니메이션을 개조하려고합니다. Textblock은 자식 컨트롤입니다. 다시 보았을 때, RelativeSource/AncestorType은 부모가 아닌 자식을 대상으로하려고하기 때문에 아마도 가까이 있지 않습니다. –