我的主页面中有一个框架,我已设置为在按钮单击时拉伸/滑动。我不希望框架在第一次按钮单击时拉伸/滑动,而是在用户第二次单击该按钮时。 XAML:
<Storyboard x:Key="FrameSlide">
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleX)" Storyboard.TargetName="currentPage">
<SplineDoubleKeyFrame KeyTime="0" Value="1"/>
<SplineDoubleKeyFrame KeyTime="0:0:0.7" Value="1.217"/>
</DoubleAnimationUsingKeyFrames>
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.X)" Storyboard.TargetName="currentPage">
<SplineDoubleKeyFrame KeyTime="0" Value="0"/>
<SplineDoubleKeyFrame KeyTime="0:0:0.7" Value="-126"/>
</DoubleAnimationUsingKeyFrames>
</Storyboard>
<Storyboard x:Key="FrameSlideBack">
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleX)" Storyboard.TargetName="currentPage">
<SplineDoubleKeyFrame KeyTime="0" Value="1.217"/>
<SplineDoubleKeyFrame KeyTime="0:0:0.7" Value="1"/>
</DoubleAnimationUsingKeyFrames>
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.X)" Storyboard.TargetName="currentPage">
<SplineDoubleKeyFrame KeyTime="0" Value="-126"/>
<SplineDoubleKeyFrame KeyTime="0:0:0.7" Value="0"/>
</DoubleAnimationUsingKeyFrames>
</Storyboard>
</Window.Resources>
<Window.Triggers>
<EventTrigger RoutedEvent="UIElement.MouseLeftButtonDown" SourceName="TransmitBTN">
<BeginStoryboard x:Name="FrameSlide" Storyboard="{StaticResource FrameSlide}"/>
</EventTrigger>
<EventTrigger RoutedEvent="UIElement.MouseLeftButtonDown" SourceName="PatientBTN">
<BeginStoryboard x:Name="FrameSlideBack" Storyboard="{StaticResource FrameSlideBack}"/>
</EventTrigger>
</Window.Triggers>
我已经尝试在我的VB.net代码中使用storyboard.stop()/ storyboard.being()按钮,但似乎xaml已经超越了vb代码。我已经厌倦了if if我的框架是一定宽度的语句,然后什么都不做就触发动画。 不知道从哪里开始。 感谢
答案 0 :(得分:0)
我在C#中回答这个问题,因为我不知道VB,但据我所知,你可以轻易改变它?
我可以跟我们一起回答的是在按钮上创建一个事件,button_click,在类中创建一个公共属性。如果事件增加属性,当它达到2时,触发你的故事板。
按钮事件的XAML:
public partial class StackOverFlowExample
{
public StackOverFlowExample()
{
InitializaComponent();
buttonClickCounter = 0;
}
public int buttonClickCounter {get; set;}
private void Button_Click(object sender, RoutedEventArgs e)
{
buttonClickCounter++;
if (buttonClickCounter == 2)
{
buttonClickCounter = 0;
Storyboard sb = Application.Current.Resources["FrameSlide"] as
Storyboard;
if (sb.IsSealed)
sb = sb.Clone();
Storyboard.SetTarget(sb, this.NextButton);
sb.Completed += delegate { };
sb.Begin();
}
e.Handled = true;
}
}
C#代码:
Gender