无法以编程方式在WPF中设置动画控件的宽度或高度(甚至无法通过Snoop设置)

死者

这可能与动画有关。我有一个WPF控件,正在通过几个不同的情节提要板为其设置动画的宽度和高度。我创建情节提要,然后在它们上调用Begin()。我提供了以下故事板外观的代码。

我想重新评估某个事件的控件大小(例如,窗口大小调整),以使其与动画值不同。我试图通过设置控件WidthHeight属性来手动处理SizeChanged(在动画运行之后)调试器显示未设置这些值(保留原始值)。

当我通过探听检查WPF时,“宽度”和“高度”行以桃红色/橙色突出显示,并且尝试再次通过其设置值不会持久化它(当我将焦点移开时会显示原始值。我的猜测是动画在某种程度上超越了对属性的手动更改,但是我不确定这是否成立或如何解决。

故事板类

public class MyAnimationClass
{
    private Storyboard _myStoryboard;
    private DoubleAnimation _animation1;
    private DoubleAnimation _animation2;
    private DoubleAnimation _animation3;

    private void InitializeStoryboard()
    {
        _myStoryboard = CreateMyStoryboard(out _animation1, out _animation2, out _animation3);
    }

    private Storyboard CreateMyStoryboard(out DoubleAnimation animation1, out DoubleAnimation animation2, out DoubleAnimation animation3)
    {
        var myStoryboard = new Storyboard();

        // create animations
        animation1 = new DoubleAnimation { Duration = new TimeSpan(0, 0, 0, 0, 250), From = 0, To = 0 };
        animation2 = new DoubleAnimation { BeginTime = new TimeSpan(), Duration = new TimeSpan(0, 0, 0, 0, 250), From = 35, To = 35 };
        animation3 = new DoubleAnimation { BeginTime = new TimeSpan(0, 0, 0, 0, 250), Duration = new TimeSpan(0, 0, 0, 0, 250), From = 35, To = 0 };

        Storyboard.SetTargetProperty(animation1, new PropertyPath(FrameworkElement.WidthProperty));
        Storyboard.SetTargetProperty(animation2, new PropertyPath(FrameworkElement.HeightProperty));
        Storyboard.SetTargetProperty(animation3, new PropertyPath(FrameworkElement.HeightProperty));

        myStoryboard.Children.Add(animation1);
        myStoryboard.Children.Add(animation2);
        myStoryboard.Children.Add(animation3);

        return myStoryboard;
    }

    public void Animate(Control controlToAnimate)
    {
        // ....

        var finalWidth = CalculateFinalWidth();
        var finalHeight = CalculateFinalHeight();

        _animation1.To = finalWidth;
        _animation3.To = finalHeight;
        _myStoryboard.Begin(controlToAnimate);
    }
}

当我想制作动画时,请调用Animate()的实例MyAnimationClass

有什么想法吗?

死者

最终这是一个非常简单的修复。由于FillBehavior控制属性值,因此该值未更改但是,仅将其更改为FillBehavior.Stop不能解决我的问题,因为当我的非动画代码设置宽度/高度时,下次我的动画运行时,它将动画为我想要的宽度/高度,然后默认返回到设置的高度。这是通过在计算之后和动画之前设置控件的宽度/高度来解决的:

public void Animate(Control controlToAnimate)
{
    // ....

    var finalWidth = CalculateFinalWidth();
    var finalHeight = CalculateFinalHeight();

    // set values here so after animation they stay
    controlToAnimate.Width = finalWidth;
    controlToAnimate.Height = finalHeight;

    _animation1.To = finalWidth;
    _animation3.To = finalHeight;
    _myStoryboard.Begin(controlToAnimate);
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

以编程方式设置Imageview的高度和宽度

来自分类Dev

无法以编程方式设置单选按钮列表控件中的所选项目

来自分类Dev

通过WatchKit以编程方式设置UIImage动画

来自分类Dev

无法以编程方式设置WPF的ComboBox项目文本

来自分类Dev

无法通过观察者在magento中以编程方式设置产品属性

来自分类Dev

无法通过观察者在magento中以编程方式设置产品属性

来自分类Dev

以编程方式设置GridView和ImageView的宽度和高度

来自分类Dev

如何以编程方式为视图设置特定的宽度/高度?

来自分类Dev

以编程方式设置GridView和ImageView的宽度和高度

来自分类Dev

无法为元素的宽度设置动画

来自分类Dev

如何在 Delphi 中以编程方式设置 TDatamodule 的设计时高度/宽度?

来自分类Dev

在Android中以编程方式设置浓度像素无法正常运行

来自分类Dev

iOS无法以编程方式设置VPN

来自分类Dev

无法以编程方式设置UILabel文本

来自分类Dev

在WPF中以编程方式设置ContentControl的内容

来自分类Dev

以编程方式在WPF中设置ContentControl的内容

来自分类Dev

以编程方式设置collapsingToolbarLayout的高度

来自分类Dev

TextAreaFor无法设置宽度

来自分类Dev

在Android SlideUp面板中以编程方式设置高度

来自分类Dev

以编程方式为 xamarin android 中的 mapfragment 设置高度

来自分类Dev

无法为WebGrid列和行设置宽度或高度

来自分类Dev

在表单中放置DIV,无法设置最小宽度和高度

来自分类Dev

尝试设置UITextfield宽度约束的动画,但无法正常工作

来自分类Dev

无法在宽表中的列上设置宽度

来自分类Dev

无法在iOS中设置按钮宽度

来自分类Dev

如何通过PX在DP中设置高度和宽度

来自分类Dev

无法在React CSS中设置100%的高度

来自分类Dev

尝试以编程方式设置宽度和高度时,ImageView消失

来自分类Dev

以编程方式设置滚动条的宽度

Related 相关文章

  1. 1

    以编程方式设置Imageview的高度和宽度

  2. 2

    无法以编程方式设置单选按钮列表控件中的所选项目

  3. 3

    通过WatchKit以编程方式设置UIImage动画

  4. 4

    无法以编程方式设置WPF的ComboBox项目文本

  5. 5

    无法通过观察者在magento中以编程方式设置产品属性

  6. 6

    无法通过观察者在magento中以编程方式设置产品属性

  7. 7

    以编程方式设置GridView和ImageView的宽度和高度

  8. 8

    如何以编程方式为视图设置特定的宽度/高度?

  9. 9

    以编程方式设置GridView和ImageView的宽度和高度

  10. 10

    无法为元素的宽度设置动画

  11. 11

    如何在 Delphi 中以编程方式设置 TDatamodule 的设计时高度/宽度?

  12. 12

    在Android中以编程方式设置浓度像素无法正常运行

  13. 13

    iOS无法以编程方式设置VPN

  14. 14

    无法以编程方式设置UILabel文本

  15. 15

    在WPF中以编程方式设置ContentControl的内容

  16. 16

    以编程方式在WPF中设置ContentControl的内容

  17. 17

    以编程方式设置collapsingToolbarLayout的高度

  18. 18

    TextAreaFor无法设置宽度

  19. 19

    在Android SlideUp面板中以编程方式设置高度

  20. 20

    以编程方式为 xamarin android 中的 mapfragment 设置高度

  21. 21

    无法为WebGrid列和行设置宽度或高度

  22. 22

    在表单中放置DIV,无法设置最小宽度和高度

  23. 23

    尝试设置UITextfield宽度约束的动画,但无法正常工作

  24. 24

    无法在宽表中的列上设置宽度

  25. 25

    无法在iOS中设置按钮宽度

  26. 26

    如何通过PX在DP中设置高度和宽度

  27. 27

    无法在React CSS中设置100%的高度

  28. 28

    尝试以编程方式设置宽度和高度时,ImageView消失

  29. 29

    以编程方式设置滚动条的宽度

热门标签

归档