gezeigt Ich versuche, den Inhalt eines Etiketts zu tun, um zu animieren:C# WPF Animated Label Inhalt wird nicht
Loading
Loading.
Loading..
Loading...
wieder: wie in dieser example
Loading
Loading.
Loading..
Loading...
und so weiter .
Unter dem Code:
<Label Grid.Row="2" x:Name="CurrentTask"
FontFamily="Microsoft Sans Serif" FontSize="18" FontStyle="Italic" FontWeight="Bold"
Foreground="White" Content="Loading">
<Label.Template>
<ControlTemplate>
<ControlTemplate.Triggers>
<Trigger Property="IsEnabled" Value="False">
<Trigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="PART_Content" Storyboard.TargetProperty="Content" Duration="00:00:00.8" RepeatBehavior="Forever">
<DiscreteObjectKeyFrame KeyTime="00:00:00.0" Value="Loading"/>
<DiscreteObjectKeyFrame KeyTime="00:00:00.2" Value="Loading."/>
<DiscreteObjectKeyFrame KeyTime="00:00:00.4" Value="Loading.."/>
<DiscreteObjectKeyFrame KeyTime="00:00:00.6" Value="Loading..."/>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</BeginStoryboard>
</Trigger.EnterActions>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Label.Template>
</Label>
Das Problem ist, dass Etikett Inhalt nicht sichtbar in dem WPF-Fenster ist. Es wird nicht angezeigt. Was mache ich falsch?
Auch in den Zeilen vom Typ:
<DiscreteObjectKeyFrame KeyTime="00:00:00.0" Value="Loading"/>
Statt Hartcodierung den Wert Ich mag würde das Etikett Inhalt auf die Punkte verketten, wie kann ich das tun? Ich möchte nicht die Zeichenfolge "Loading" in jedem DiscreteObjectKeyFrame
wiederholen.
UPDATE:
<Label Grid.Row="2" x:Name="CurrentTask"
FontFamily="Microsoft Sans Serif" FontSize="18" FontStyle="Italic"
Foreground="White" Content="Loading">
<Label.Style>
<Style TargetType="Label">
<Style.Triggers>
<EventTrigger RoutedEvent="Label.Loaded">
<EventTrigger.Actions>
<BeginStoryboard>
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Content" Duration="00:00:00.8" RepeatBehavior="Forever">
<DiscreteObjectKeyFrame KeyTime="00:00:00.0" Value="Loading"/>
<DiscreteObjectKeyFrame KeyTime="00:00:00.2" Value="Loading."/>
<DiscreteObjectKeyFrame KeyTime="00:00:00.4" Value="Loading.."/>
<DiscreteObjectKeyFrame KeyTime="00:00:00.6" Value="Loading..."/>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</BeginStoryboard>
</EventTrigger.Actions>
</EventTrigger>
</Style.Triggers>
</Style>
</Label.Style>
</Label>
Hallo Clemens! Um einen schnellen Test durchzuführen, habe ich die zweite Ihrer Lösungen ausprobiert, indem ich den Label-Style-Trigger gesetzt habe, aber es funktioniert nicht. Etiketteninhalt bleibt immer "Laden". Ich habe eine MVVM-App mit einem Fenster und diesem Label, und dieses Fenster ist ein Begrüßungsbildschirm. Dieser Begrüßungsbildschirm wird (durch Instanziierung des Konstruktors) vom Ansichtskonstruktor aufgerufen. Abschließend wird Show Show() angezeigt. All diese Dinge machen mit einem Thread mit Appartment State auf STA gesetzt ... – user1624552
... In der Zwischenzeit, im View-Konstruktor der Fluss weiter, ich setze Datenkontext mit dem ViewModel und dann eine Datenbankanforderung in der Ansicht durchgeführt wird Modellbauer. Wenn dies abgeschlossen ist, wird der Begrüßungsbildschirm geschlossen. Vielleicht liegt es an dem Thread, dass es nicht funktioniert? – user1624552
Wie gesagt, es sieht seltsam aus, dass Ihr Trigger auf IsEnabled auf false gesetzt ist. Ist das beabsichtigt? – Clemens