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),反正是有不用指定这个值就可以做到这一点,这样它也可以与其他分辨率一起工作。
谢谢
答
修改后面的代码的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
谢谢,这对我很有用 –
我建议你将值绑定到你的viewmodel属性。 然后您将能够获得您的屏幕分辨率,我认为你必须看看:https://stackoverflow.com/questions/5082610/get-and-set-screen-resolution – pix