Frage

In meiner WPF-Anwendung, ich habe den Standard generic.xaml-Datei, die einen Stil für meine benutzerdefinierte Klasse enthält, Frost .

Ich muss einen Weg finden, um die Completed-Ereignis eines der Animationen zu meinen benutzerdefinierten hook up Frost Klasse, ich kann es zur Laufzeit nicht, weil es bei mir beschwert, dass ich IsFrozen festlegen müssen false was ich tun will nicht (wegen der Leistung).

Wie kann ich Ereignisse an den Target der Steuervorlage anschließen?

    <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>
War es hilfreich?

Lösung

Sie können eine benutzerdefinierte Animation erstellen und einen Eventhandler, um es hinzuzufügen oder einen Befehl als Abhängigkeitseigenschaft verwenden. Für ein Codeproject Beispiel für eine benutzerdefinierte Animation Blick auf diesen Link .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top