博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
WPF当属性值改变时利用PropertyChanged事件来加载动画
阅读量:4538 次
发布时间:2019-06-08

本文共 2535 字,大约阅读时间需要 8 分钟。

原文:

    在我们的程序中,有时我们需要当绑定到UI界面上的属性值发生变化从而引起数据更新的时候能够加载一些动画,从而使数据更新的效果更佳绚丽,在我们的程序中尽量将动画作为一种资源放在xaml中,而不是在后台中通过写代码的这种方式来加载动画,在我们的这篇博客中我们尽量使用简洁的语言来阐述这一方法。

    1 首先来看一下写到资源中的Storyboard

  这里面的translateTransform是为Canvas所定义的一个RenderTansform。

  2 第二步就是如何在绑定到前台的数据更新时加载动画效果。首先贴出代码,然后再做进一步的分析。

public partial class DisplayLayer : UserControl    {                public DisplayLayer()        {            InitializeComponent();              Loaded+=new RoutedEventHandler(DisplayLayer_Loaded);        }        private void DisplayLayer_Loaded(object sender, RoutedEventArgs e)        {            DisplayViewModels current = this.DataContext as DisplayViewModels;            if (current != null)            {                current.CurrentBindingObject.PropertyChanged+=Current_PropertyChanged;            }        }        private void Current_PropertyChanged(object sender, PropertyChangedEventArgs e)        {            if (e.PropertyName == "Notice")            {                Dispatcher.Invoke(new Action(() =>                    {                        (TryFindResource("FadeIn") as Storyboard).Begin();                    }));                        }                }    }

  3 这里在当前用户控件加载完成后,找到绑定到前台的DataContext对象(这里是current.CurrentBindingObject)然后利用PropertyChanged事件来写该事件,首先我们来看一下PropertyChangedEventArgs这个类。

// 摘要:    //     为 System.ComponentModel.INotifyPropertyChanged.PropertyChanged 事件提供数据。    public class PropertyChangedEventArgs : EventArgs    {        // 摘要:        //     初始化 System.ComponentModel.PropertyChangedEventArgs 类的新实例。        //        // 参数:        //   propertyName:        //     已更改的属性的名称。        public PropertyChangedEventArgs(string propertyName);        // 摘要:        //     获取已更改的属性名称。        //        // 返回结果:        //     已更改的属性的名称。        public virtual string PropertyName { get; }    }

  这里面定义了当前类的构造函数,和获取已更改的属性的名称。在我们的程序中通过e.PropertyName能够获取当前属性的变化对象,这里我们找到Notice绑定的对象,然后通过(TryFindResource("FadeIn") as Storyboard).Begin();来动态加载动画,这种方式在WPF中应该是一种比较合理的加载动画的方式,另外还有一个需要注意的地方是必须是在整个窗体加载完成(Loaded加载时)才能够获取到当前绑定的DataContext否则获取的值为null。

posted on
2018-09-20 09:07 阅读(
...) 评论(
...)

转载于:https://www.cnblogs.com/lonelyxmas/p/9678847.html

你可能感兴趣的文章
Django Form 的主要内置字段介绍
查看>>
如何写好一个UITableView
查看>>
XML文件生成C++代码(基于rapidxml)
查看>>
写代码,更需要设计代码
查看>>
iOS:修改项目名
查看>>
SpringCloud-Eureka
查看>>
double在输出为字符串的几种方法效率测试
查看>>
ArcGIS API for JavaScript 4.2学习笔记[14] 弹窗的位置、为弹窗添加元素
查看>>
电路基础
查看>>
jquery 对象与DOM对象转换
查看>>
DELPHI 调用系统 ADO 配置窗体 提高软件易用性
查看>>
Mongodb 命令及 PyMongo 库的使用
查看>>
div+css 兼容ie6 ie7 ie8 ie9和FireFox Chrome等浏览器方法(非原创)
查看>>
关于SDWebImage加载高清图片导致app崩溃的问题
查看>>
如何查看方法在哪里被调用
查看>>
HUE的自动化安装部署
查看>>
图片服务器(FastDFS)的搭建
查看>>
myBatis应用
查看>>
RuntimeError: DataLoader worker (pid 18255) is killed by signal: Killed.
查看>>
[PHP] 用AppServ一步到位安装PHP服务器
查看>>