簡體   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