可能是迄今为止最好用的WPF加载动画功能(没有之一) 您所在的位置:网站首页 2k16键盘按键设置在哪 可能是迄今为止最好用的WPF加载动画功能(没有之一)

可能是迄今为止最好用的WPF加载动画功能(没有之一)

2024-06-03 09:44| 来源: 网络整理| 查看: 265

文章目录 前言一、需求分析1.1 实现方式一1.2 实现方式二1.3 实现方式三 二、基本用法三、高级用法2.1 FrameworkElementExtension.IsLoading只能在Grid上使用吗?2.1 我觉得加载动画不好看,有没有办法换成其它的? 四、综合案例

前言

当我们在开发应用程序时,用户体验往往是至关重要的一环。在应用程序加载大量数据或执行复杂操作时,为用户提供一个良好的加载体验变得至关重要。加载动画是其中一个有效的方式,它不仅能够告知用户应用程序正在进行工作,还能够缓解用户在等待过程中的焦虑感。

一、需求分析

开发一个加载动画比较常见的做法一般有以下三种。

1.1 实现方式一

直接在控件的上层添加一层半透明遮罩,在遮罩上面显示加载动画,需要显示加载效果的时候将这个遮罩显示出来,加载完成以后隐藏这个遮罩,这种方式虽然也能实现需求,但是缺点也很明显,每次要使用加载效果的时候都需要单独添加遮罩代码,单独写控制显示和隐藏的代码,一个项目页面那么多,每次都这样整,那不得把人整崩溃了。

1.2 实现方式二

开发一个控件,在这个控件当中实现遮罩的效果,然后用这个控件把页面内容包起来,这样直接控制这个控件的属性就能实现遮罩效果,这也是很多第三方控件库的实现方式。这种方式在易用性上虽然有所提升,但是还是有上面的问题,每个要用的地方都得Copy一次代码。

1.3 实现方式三

使用装饰器来实现这个功能,它的优点就是对源代码侵入很小,不用每次使用都Copy大段代码,并且可扩展性非常强。

总结:通过对比以上实现方式可以看出,第三种方式是最优解,所以我们今天使用该方式来实现Loading效果(由于篇幅原因,这里不展示实现过程,有需要源代码的请到群文件查看)。

二、基本用法

以下为示例代码,当ViewModel中的IsLoading属性值为True时,就会触发Loading动画。

View代码:

ViewModel代码:

namespace LoadingDemo.ViewModels { public class MainWindowViewModel : BindableBase { private bool _isLoading = false; public bool IsLoading { get { return _isLoading; } set { this.SetProperty(ref _isLoading, value); } } } }

运行效果: 在这里插入图片描述

三、高级用法 2.1 FrameworkElementExtension.IsLoading只能在Grid上使用吗?

答:No,几乎所有控件都可以使用,Window、Page、UserControl、Panel、Button、Rectangle、Path、TextBox等等,都没问题,只需要将IsLoading设置为True,就会出现Loading效果。

2.1 我觉得加载动画不好看,有没有办法换成其它的?

答:当然可以,除了默认加载效果以外,还可以添加任意你喜欢的效果,不管它是文字、动画、视频、gif图片还是其它的东西,通通都可以,并且操作非常简单,一共有两种方式。 方式一:统一添加的方式 只需在Resources中添加一个名为MaskContent的资源,在触发加载遮罩显示的时候就会自动读取该资源作为动画元素,如果放在App.Resources中,整个项目所有加载效果都使用该资源,如果放在Window.Resources中,Window中的所有加载效果都使用该资源,以此类推。以下都是合法的代码。

添加自定义动画效果(用户控件)

在这里插入图片描述 添加文字

在这里插入图片描述 添加进度条控件

在这里插入图片描述 方式二:单独添加的方式

在这里插入图片描述

四、综合案例

在这里插入图片描述 如需以上代码,请到群(661224882)共享文件中下载

完结

服务范围:WPF项目委托研发、WPF项目整体外包、WPF项目驻场开发、WPF控件定制开发、WPF界面开发、WPF动画设计、WPF技术咨询、WPF技术培训、WPF技术难题解决等。 QQ号/微信:446522563 QQ技术群:661224882 微信公众号:趋时软件 QQ号:446522563 QQ群:661224882 微信公众号:趋时软件



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有