스토리 보드에서 프레임 워크 요소를 가져옵니다
-
22-07-2019 - |
문제
스토리 보드 객체의 인스턴스에 대한 참조가 있으며, 프레임 워크 요소가 / 애니메이션에 첨부 된 프레임 워크 요소를 잡고 싶습니다. 나는이 작업을 수행 할 수 없었습니다.
예를 들어 아래 XAML에서 스토리 보드 참조에서 레이블이나 그리드를 잡을 수 있습니까?
<Grid>
<Grid.Resources>
<Storyboard x:Key="myStoryboard">
<DoubleAnimation Storyboard.TargetProperty="Opacity" From="1" To="0" Duration="0:0:5"/>
</Storyboard>
<Style x:Key="myStyle" TargetType="{x:Type Label}">
<Style.Triggers>
<DataTrigger
Binding="{Binding Path=StartAnimation}" Value="true">
<DataTrigger.EnterActions>
<BeginStoryboard Storyboard="{StaticResource myStoryboard}" />
</DataTrigger.EnterActions>
</DataTrigger>
</Style.Triggers>
</Style>
</Grid.Resources>
<Label x:Name="labelHello" Grid.Row="0" Style="{StaticResource myStyle}">Hello</Label>
</Grid>
왜 지구상에서 내가 해야하는지 궁금해하는 사람들을 위해, 나는 파생 된 스토리 보드 클래스 또는 첨부 된 동작을 만들려고 노력하고 있기 때문에 스토리 보드에서 이벤트 화를 완료했을 때 호출 할 데이터 콘텍스트에서 메소드 이름을 지정할 수 있습니다. 이를 통해 내 뷰 모델을 호출하기 위해 몇 가지 코드가 필요하지 않고 순수한 MVVM을 수행 할 수 있습니다.
해결책
XAML을 다음과 같은 것으로 변경 한 경우 :
<Grid x:Name="grid">
<Grid.Resources>
<Storyboard x:Key="myStoryboard">
<DoubleAnimation Storyboard.TargetProperty="Opacity" From="1" To="0" Duration="0:0:5" Storyboard.Target="{Binding ElementName = grid}"/>
</Storyboard>
<Style x:Key="myStyle" TargetType="{x:Type Label}">
<Style.Triggers>
<DataTrigger
Binding="{Binding Path=StartAnimation}" Value="true">
<DataTrigger.EnterActions>
<BeginStoryboard Storyboard="{StaticResource myStoryboard}" />
</DataTrigger.EnterActions>
</DataTrigger>
</Style.Triggers>
</Style>
</Grid.Resources>
<Label x:Name="labelHello" Grid.Row="0" Style="{StaticResource myStyle}">Hello</Label>
</Grid>
이것은 그리드에 x : 이름과 스토리 보드를 소개합니다. 이제이 코드로 그리드에 대한 참조를 얻을 수 있습니다.
Storyboard sb = //You mentioned you had a reference to this.
var timeLine = sb.Children.First();
var myGrid = Storyboard.GetTarget(timeLine);
제휴하지 않습니다 StackOverflow