2017-08-28 49 views
0

我是WPF的新手,剛開始習慣它, 我想在加載時在屏幕上移動一個頁面。我使用的是當前的代碼是: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> 

雖然這個工作對我很好,我想要的是在

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

值字段不使用硬值(1920),反正是有不用指定這個值就可以做到這一點,這樣它也可以與其他分辨率一起工作。

謝謝

+0

我建議你將值綁定到你的viewmodel屬性。 然後您將能夠獲得您的屏幕分辨率,我認爲你必須看看:https://stackoverflow.com/questions/5082610/get-and-set-screen-resolution – pix

回答

0

修改後面的代碼的KeyFrame值。 您應該將資源名稱分配給故事板資源以通過後面的代碼找到。

[XAML] 
<Storyboard x:Key="myStoryboard"> 

通過引用x:Key來獲取Storyboard對象實例。

[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); 
} 

此外,您可以使用數據綁定來更改關鍵幀值。如果您需要更改很多關鍵幀資源,則應使用數據綁定。否則,手動更改值容易準備。

+0

謝謝,這對我很有用 –