Ich habe ein Rechteck, mit dem ich die Hintergrundfarbe animiere.WPF Animation mit Datentriggern
Sie sollte jedes Mal grün werden, wenn eine bestimmte Zahl höher wird. Und rot, wenn es geht. Wenn sich die Zahl für eine Weile nicht ändert, wird sie langsam wieder auf die Standardfarbe zurückgesetzt
So wechselt die Animation sehr schnell den Hintergrund von grau nach rot und dauert dann einige Sekunden, um wieder grau zu werden.
Ich habe als Datatrigger hinzugefügt, die auf 1 oder gebunden ist, -1, je nachdem wie die Zahl
Das Problem geändert hat, ist, dass, wenn die Zahl hält sich die Animation steigt nicht neu gestartet bekommen.
z.B. wenn die Reihenfolge der Nummern 1 geht, 2, 3, 4, 5. Dann würde ich die Animation wie bei jeder Nummer Änderung neu zu starten
der Code verwende ich unter
<Rectangle.Style>
<Style>
<Style.Triggers>
<DataTrigger Binding="{Binding BidChangeDirectionIndicator}"
Value="-1">
<DataTrigger.EnterActions>
<BeginStoryboard x:Name="bidDownStory">
<Storyboard>
<ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(Shape.Fill).(GradientBrush.GradientStops)[1].(GradientStop.Color)">
<EasingColorKeyFrame KeyTime="0"
Value="#FF79797A" />
<EasingColorKeyFrame KeyTime="0:0:0.2"
Value="#FFF13B29" />
<EasingColorKeyFrame KeyTime="0:0:10.0"
Value="#FF79797A" />
</ColorAnimationUsingKeyFrames>
<ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(Shape.Fill).(GradientBrush.GradientStops)[0].(GradientStop.Color)">
<EasingColorKeyFrame KeyTime="0"
Value="#FF2B2B2B" />
<EasingColorKeyFrame KeyTime="0:0:0.2"
Value="#FF3F0606" />
<EasingColorKeyFrame KeyTime="0:0:10.0"
Value="#FF2B2B2B" />
</ColorAnimationUsingKeyFrames>
</Storyboard>
</BeginStoryboard>
</DataTrigger.EnterActions>
<DataTrigger.ExitActions>
<StopStoryboard BeginStoryboardName="bidDownStory" />
</DataTrigger.ExitActions>
</DataTrigger>
</Style.Triggers>
</Style>
und das Viewmodel I Die Zahl ändert sich jedes Mal, wird wie dieses
private int _bidChangeDirectionIndicator;
public int BidChangeDirectionIndicator
{
get { return _bidChangeDirectionIndicator; }
set
{
_bidChangeDirectionIndicator = value;
RaisePropertyChanged("BidChangeDirectionIndicator");
}
}
....
public void Update(RateInfo rateInfo)
{
if (rateInfo.Bid != Bid)
{
BidChangeDirectionIndicator = Math.Sign(rateInfo.Bid - Bid);
}
}
Die Methode sieht mich verbindlich genannt (dies wird durch eine Klasse durchgeführt, die an einen externen Feed hört)
Es ist schwierig, das neu zu erstellen. Kannst du auch deinen Klassencode posten? Und hast du von Anfang an versucht, 'FillBehavior =" Stop "auf diese Animationen zu setzen? – decyclone
hi - Ich habe die wichtigen Bits oben hinzugefügt. Ich denke, Sie könnten dies mit einer Klasse replizieren, die alle paar Sekunden in einer Schleife aktualisiert. – ChrisCa
Auch - FillBehaviour = "Stop" hat leider nicht funktioniert – ChrisCa