繁体   English   中英

无法将动画从页面WPF C#应用于父帧

[英]Cannot apply animation to parent frame from page WPF c#

我在Frame有一个page我想做的是将页面中的情节提要/动画应用于父Frame 通常,从用户控件中,我使用以下代码获取父级:

var parent = (Frame)this.Parent;

但是,如果我在页面中使用相同的代码来获取父框架并应用动画:

private void Goback_MouseDown(object sender, MouseButtonEventArgs e)
{
Storyboard sb = new Storyboard;
sb = this.FindResource("HideMainframe");
var parent = (Frame)this.Parent;
Storyboard.SetTarget(sb, parent);
sb.Begin();
}

故事板

 <Storyboard x:Key="HideMainframe" Storyboard.TargetProperty="Opacity" >
        <DoubleAnimation Duration="0:0:0.5" To="0" >
            <DoubleAnimation.EasingFunction>
                <CircleEase  EasingMode="EaseIn"/>
            </DoubleAnimation.EasingFunction>
        </DoubleAnimation>
    </Storyboard>

我得到一个例外: No target was specified for 'System.Windows.Media.Animation.DoubleAnimation'. 在网上,我开始了解VisualTreeHelper类,但在此之前,我想知道为什么我的代码无法正常工作? 或具体来说,为什么我不能从页面中获取父框架?

因此,看起来在框架中导航的页面不包含“父项”值,这就是为什么您指定的方法不起作用,但通过VisualTreeHelper起作用的原因。 通过将Frame传递给Page Constructor可以很容易地简化您要实现的目标。

您的页面代码背后

Frame f;
public Page1(Frame frame)
{
    f = frame;
    InitializeComponent();
}

您的按钮逻辑

private void Goback_MouseDown(object sender, MouseButtonEventArgs e)
{
   Storyboard sb = (Storyboard)this.TryFindResource("HideMainframe");
   Storyboard.SetTarget(sb, f);
   sb.Begin();
}

因此,在浏览框架时,只需将其传递即可。

myFrame.Navigate(new Page1(myFrame)); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM