Wie kombinieren DataTrigger und EventTrigger?

HINWEIS habe ich gefragt, die damit verbundene Frage (mit einer akzeptierten Antwort): Wie kombinieren DataTrigger und Trigger?

Ich glaube, ich brauche zu kombinieren EventTrigger und ein DataTrigger zu erreichen, was ich mir nach:

  • wenn ein Element in meine ListBox, es sollte flash für ein paar Momente
  • wenn das Element 'Kritische', dann bleiben sollte hervorgehoben

Derzeit habe ich ein DataTemplate, das wie folgt aussieht:

<DataTemplate DataType="{x:Type Notifications:NotificationViewModel}">
    <Grid HorizontalAlignment="Stretch">
        <Border Name="Background" CornerRadius="8" Background="#80c0c0c0" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" />
        <Border Name="Highlight"  CornerRadius="8" Background="Red"       HorizontalAlignment="Stretch" VerticalAlignment="Stretch" />
        <!-- snip actual visual stuff -->
        <Grid.Triggers>
            <EventTrigger RoutedEvent="Grid.Loaded">
                <EventTrigger.Actions>
                    <BeginStoryboard>
                        <Storyboard>
                            <DoubleAnimation x:Name="LoadedAnimation" 
                                             Storyboard.TargetName="Highlight" 
                                             Storyboard.TargetProperty="Opacity" 
                                             From="0" To="1" 
                                             RepeatBehavior="5x" 
                                             Duration="0:00:0.2" 
                                             AutoReverse="True" />
                        </Storyboard>
                    </BeginStoryboard>
                </EventTrigger.Actions>
            </EventTrigger>
        </Grid.Triggers>
    </Grid>
    <DataTemplate.Triggers>
        <DataTrigger Binding="{Binding Path=IsCritical}" Value="True">
            <Setter TargetName="LoadedAnimation" Property="RepeatBehavior" Value="5.5x" />
        </DataTrigger>
    </DataTemplate.Triggers>
</DataTemplate>

Die Idee ist, dass ein EventTrigger animiert die Highlight Grenze der Deckkraft zwischen 0 und 1 und wieder zurück wiederholt, wenn das Element zum ersten mal geladen wird, zeichnen die Aufmerksamkeit des Benutzers zu. Die DataTrigger bestimmt die Anzahl von malen zu animieren. Wenn ein view-Modell berichten, dass die Sache IsCritical dann die animation erfolgt 5,5 mal (so dass es endet am opacity 1), sonst tritt 5-mal (endend bei Deckkraft 0.)

Jedoch die oben XAML funktioniert nicht, da die DataTrigger der setter schlägt fehl mit:

Kind mit dem Namen 'LoadedAnimation' nicht gefunden im VisualTree.

Fair genug. Also, scheuen mithilfe einer benutzerdefinierten Wert Konverter oder setzen Sie die animation zählen Sie auf die Ansicht Modell und die Bindung zu ihm, was sind meine Optionen?

InformationsquelleAutor Drew Noakes | 2009-11-05
Schreibe einen Kommentar