Domanda

Nella mia applicazione WPF, ho il file generic.xaml standard, che contiene uno stile per la mia classe personalizzata, Gelo .

Ho bisogno di trovare un modo per collegare l'evento completato di una delle animazioni per mia abitudine Gelo di classe, non posso farlo in fase di runtime perché lamenta di me che ho bisogno di impostare IsFrozen su false, che non voglio fare (a causa di prestazioni).

Come faccio a collegare gli eventi al TargetType del modello di controllo?

    <Style TargetType="{x:Type Controls:Frost}">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type Controls:Frost}">
                    <ControlTemplate.Resources>
                        <Storyboard x:Key="OnEndFrost">
                            <DoubleAnimation Name="fadeOutFrostAnimation"
                                             BeginTime="00:00:00" 
                                             Duration="00:00:02"
                                             Storyboard.TargetName="frostElement" 
                                             Storyboard.TargetProperty="(UIElement.Opacity)"
                                             To="0">
                            </DoubleAnimation>
                        </Storyboard>
                    </ControlTemplate.Resources>
                    <Grid>
                        <MediaElement x:Name="frostElement" 
                                     LoadedBehavior="Manual"
                                     Width="1172" 
                                     Height="286.917" 
                                     Source="{TemplateBinding SourceUri}"
                                     ScrubbingEnabled="True">
                            <MediaElement.Effect>
                                <eff:ChromaKeyAlphaEffect InputColor="#FF0E425E" Tolerance="0.1" />
                            </MediaElement.Effect>
                        </MediaElement>
                    </Grid>
                    <ControlTemplate.Triggers>
                        <EventTrigger RoutedEvent="Controls:Frost.EndFrost">
                            <BeginStoryboard x:Name="OnEndFrost_BeginStoryboard" Storyboard="{StaticResource OnEndFrost}"/>
                        </EventTrigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
È stato utile?

Soluzione

È possibile creare un'animazione personalizzata e aggiungere un EventHandler ad esso o utilizzare un comando come proprietà di dipendenza. Per un esempio CodeProject di uno sguardo di animazione personalizzati nei questo link .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top