我有一个要求,我需要一个按钮,在几秒钟内从屏幕的一端移动到另一端(水平)。我试过这个并且在某种程度上有效。
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateX)" Storyboard.TargetName="button">
<EasingDoubleKeyFrame KeyTime="0:0:1" Value="0" />
<!--<EasingDoubleKeyFrame KeyTime="0:0:6.9" Value="{Binding MainPage.width}">-->
<EasingDoubleKeyFrame KeyTime="0:0:6.9" Value="-1283.725">
<EasingDoubleKeyFrame.EasingFunction>
<CircleEase EasingMode="EaseIn"/>
</EasingDoubleKeyFrame.EasingFunction>
</EasingDoubleKeyFrame>
</DoubleAnimationUsingKeyFrames>
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateY)" Storyboard.TargetName="button">
<EasingDoubleKeyFrame KeyTime="0:0:1" Value="0"/>
<!--<EasingDoubleKeyFrame KeyTime="0:0:6.9" Value="{Binding Path=MainPage.height}">-->
<EasingDoubleKeyFrame KeyTime="0:0:6.9" Value="-467.732">
<EasingDoubleKeyFrame.EasingFunction>
<CircleEase EasingMode="EaseIn"/>
</EasingDoubleKeyFrame.EasingFunction>
</EasingDoubleKeyFrame>
</DoubleAnimationUsingKeyFrames>
但问题是由于屏幕尺寸和尺寸造成的。屏幕方向。 在大屏幕上它停在中间。我想动态设置 EasingDoubleKeyFrame 的值。代码隐藏或绑定或任何其他方式。
但我不想在Code Behind中编写整个故事板。
我可以获得屏幕宽度&amp;高度使用
Rect bounds = Window.Current.Bounds;
static double height = 0;
static double width = 0;
public MainPage()
{
this.InitializeComponent();
this.Loaded += MainPage_Loaded;
height = bounds.Height;
width = -1 * bounds.Width;
}
如果有一个简单的方法,请告诉我。
答案 0 :(得分:4)
我找不到一种方法来绑定故事板表达式的值。
但是,解决方法是每次手动设置它。我们可以通过给它一个名称属性来做到这一点:
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform). (CompositeTransform.TranslateX)" Storyboard.TargetName="button">
<EasingDoubleKeyFrame KeyTime="0:0:1" Value="0" />
<EasingDoubleKeyFrame x:Name="buttonTranslateX" KeyTime="0:0:9.9" Value="0" />
</DoubleAnimationUsingKeyFrames>
在页面初始化上设置如下的值:
Rect bounds = Window.Current.Bounds;
static double height = 0;
static double width = 0;
public MainPage()
{
this.InitializeComponent();
this.Loaded += MainPage_Loaded;
height = bounds.Height;
width = -1 * bounds.Width;
buttonTranslateX.Value = width;
}
这将创建一个漂亮的小动画,其中对象将在大约9秒内在屏幕上水平移动。