Höhe in Windows 8 UI Element animieren

Heute erreicht mich eine Mail Support Anfrage eines Schulungskunden. Wir bieten ein Jahr kostenfreien Support per eMail nach einem Training an. Jedenfalls fragt mich ein Kursteilnehmer warum er per Animation die Höhe eines XAML UI Elements nicht verändern kann. Soweit ich mich erinnere geht das in WPF und Silverlight. In der Tat läuft folgende Animation nicht ab.

   1:  <Page.Resources>
   2:          <Storyboard x:Name="Storyboard1">
   3:              <DoubleAnimation Duration="0:0:1" To="100" 
Storyboard.TargetProperty="Height" Storyboard.TargetName="button" d:IsOptimized="True" />
   4:          </Storyboard>
   5:      </Page.Resources>
   6:   
   7:      <Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
   8:          <Button x:Name="button" Content="Button" 
HorizontalAlignment="Left" Height="82" Margin="500,100,0,0" VerticalAlignment="Top"
Width="242" Click="Button_Click" RenderTransformOrigin="0.5,0.5">
   9:              <Button.RenderTransform>
  10:                  <CompositeTransform/>
  11:              </Button.RenderTransform>
  12:          </Button>
  13:   
  14:      </Grid>

Expression Blend liefert mir allerdings den passenden Tipp

image

Es gibt eine Eigenschaft EnableDependentAnimation die auf True gesetzt werden muss und dann klappt es mit der Hight Animation. Laut Doku dient dieses gegenüber Standard XAML geänderte Verhalten der Optimierung.

•Die Festlegung der EnableDependentAnimation-Eigenschaft ermöglicht die Ausführung einer abhängigen Animation im UI-Thread. Konvertieren Sie diese Animationen in eine unabhängige Version. Animieren Sie zum Beispiel ScaleTransform.XScale und ScaleTransform.YScale anstelle von Width und Height eines Objekts.

Wenn also die Hardware/Grafikkarte keine Animation rechnen kann, macht das Windows 8 nicht, außer ich zwinge ihn zu seinem Glück.

 

Kommentare sind geschlossen