wpf中移动一个页面在屏幕上

问题描述:

我是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://*.com/questions/5082610/get-and-set-screen-resolution – pix

修改后面的代码的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

谢谢,这对我很有用 –