문제

스토리 보드 객체의 인스턴스에 대한 참조가 있으며, 프레임 워크 요소가 / 애니메이션에 첨부 된 프레임 워크 요소를 잡고 싶습니다. 나는이 작업을 수행 할 수 없었습니다.

예를 들어 아래 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);
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top