wpf - 在以编程方式添加的控件上使用 Storyboard 动画

标签 wpf animation storyboard

我正在尝试将新控件淡入应用程序的“应用程序”区域,该区域是在删除现有控件后以编程方式添加的。我的代码如下所示:

        void settingsButton_Clicked(object sender, EventArgs e)
    {
        ContentCanvas.Children.Clear();

        // Fade in settings panel
        NameScope.SetNameScope(this, new NameScope());

        SettingsPane s = new SettingsPane();
        s.Name = "settingsPane";

        this.RegisterName(s.Name, s);
        this.Resources.Add(s.Name, s);

        Storyboard sb = new Storyboard();

        DoubleAnimation settingsFade = new DoubleAnimation();
        settingsFade.From = 0;
        settingsFade.To = 1;
        settingsFade.Duration = new Duration(TimeSpan.FromSeconds(0.33));
        settingsFade.RepeatBehavior = new RepeatBehavior(1);
        Storyboard.SetTargetName(settingsFade, s.Name);
        Storyboard.SetTargetProperty(settingsFade, new PropertyPath(UserControl.OpacityProperty));

        ContentCanvas.Children.Add(s);

        sb.Children.Add(settingsFade);
        sb.Begin();
    }

但是,当我运行此代码时,我收到错误“不存在可解析名称“settingsPane”的适用名称范围。”

我可能做错了什么?我很确定我已经正确注册了所有内容:(

最佳答案

我不会为 NameScopes 等而烦恼,而宁愿使用 Storyboard.SetTarget 来代替。

var b = new Button() { Content = "abcd" };
stack.Children.Add(b);

var fade = new DoubleAnimation()
{
    From = 0,
    To = 1,
    Duration = TimeSpan.FromSeconds(5),
};

Storyboard.SetTarget(fade, b);
Storyboard.SetTargetProperty(fade, new PropertyPath(Button.OpacityProperty));

var sb = new Storyboard();
sb.Children.Add(fade);

sb.Begin();

关于wpf - 在以编程方式添加的控件上使用 Storyboard 动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/695782/

相关文章:

.net - Silverlight 对比WPF 对比Winforms 有什么特别适合我的目的?

WPF 圆角边框 ListView 裁剪问题

css - 为什么动画不适用于最大高度?

iphone - Storyboard警告 : prototype table cells must have reuse identifiers

wpf - 如何在 WPF 中将 ItemsSource 的索引作为 CommandParameter 传递

WPF 组合框 SelectedIndex 不起作用

ios - 移动时为多个帧设置动画的正确方法

javascript - 并发动画结束时的jquery

ios - 可重用 View Controller 的自定义初始化器

ios - 具有大量 View Controller 的 Storyboard或 xib