2017-08-28 1 views
0

Ich bin neu in WPF und nur daran zu gewöhnen, Ich möchte eine Seite über den Bildschirm verschieben, wenn ich es laden. Der Kodex ich zur Zeit für die Verwendung ist:Verschieben einer Seite über den Bildschirm in WPF

<Storyboard> 
    <ThicknessAnimationUsingKeyFrames Storyboard.TargetProperty="Margin" BeginTime="00:00:00"> 
     <SplineThicknessKeyFrame KeyTime="00:00:00" Value="1920,0,0,0" /> 
     <SplineThicknessKeyFrame KeyTime="00:00:02" Value="0,0,0,0" /> 
    </ThicknessAnimationUsingKeyFrames> 
    <DoubleAnimation 
      Storyboard.TargetName="SummaryPageName" 
      Storyboard.TargetProperty="Opacity" 
      From="0" To="1" Duration="0:0:2" 
      AutoReverse="False"> 
    </DoubleAnimation> 
</Storyboard> 

Während dies für mich gut funktioniert, was ich will, ist nicht schwer, Werte zu verwenden (1920) in Wertfeld

<SplineThicknessKeyFrame KeyTime="00:00:00" Value="1920,0,0,0" /> 

Gibt es trotzdem zu Tun Sie das, ohne diesen Wert anzugeben, damit er auch mit anderen Auflösungen funktioniert.

Vielen Dank

+0

Ich empfehle Ihnen, den Wert an Ihre Viewmodel Eigenschaften zu binden. Dann werden Sie in der Lage sein, Ihre Bildschirmauflösung zu bekommen, ich denke, Sie müssen sich ansehen: https://stackoverflow.com/questions/5082610/get-and-set-screen-resolution – pix

Antwort

0

Ändern Sie den KeyFrame-Wert mit Code hinter. Sie sollten der Storyboard-Ressource einen Ressourcennamen zuweisen, der durch den Code dahinter gefunden wird.

Holen Sie die Storyboard-Objektinstanz durch Verweisen auf x: Key.

[C#] 
private void MainWindow_SizeChanged(object sender, SizeChangedEventArgs e) 
{ 
    Storyboard s = this.Resources["myStoryboard"] as Storyboard; 
    SplineThicknessKeyFrame k = (s.Children[0] as ThicknessAnimationUsingKeyFrames).KeyFrames[0] as SplineThicknessKeyFrame; 
    k.Value = new Thickness(e.NewSize.Width,0,0,0); 
} 

Sie können auch Datenbindung verwenden, um den Keyframe-Wert zu ändern. Wenn Sie viele Keyframe-Ressourcen ändern müssen, sollten Sie die Datenbindung verwenden. Andernfalls ist es einfach, den Wert manuell zu ändern.

+0

Danke, Das funktioniert für mich –

Verwandte Themen