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

这篇具有很好参考价值的文章主要介绍了可能是迄今为止最好用的WPF加载动画功能(没有之一)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

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

一.需求分析

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

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

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

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

二.基本用法

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

View代码:

<Window
    x:Class="LoadingDemo.Views.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:extensions="clr-namespace:LoadingDemo.Extensions"
    xmlns:prism="http://prismlibrary.com/"
    Title="Loading测试"
    Width="1366"
    Height="768"
    prism:ViewModelLocator.AutoWireViewModel="True"
    FontSize="22"
    WindowStartupLocation="CenterScreen">
    <Grid extensions:FrameworkElementExtension.IsLoading="{Binding IsLoading}">
        
    </Grid>
</Window>

ViewModel代码:

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

运行效果:

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

三、级用法

2.1 FrameworkElementExtension.IsLoading只能在Grid上使用吗?

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

 

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

答:当然可以,除了默认加载效果以外,还可以添加任意你喜欢的效果,不管它是文字、动画、视频、gif图片还是其它的东西,通通都可以,并且操作非常简单,一共有两种方式。

  • 方式一:统一添加的方式

    只需在Resources中添加一个名为MaskContent的资源,在触发加载遮罩显示的时候就会自动读取该资源作为动画元素,如果放在App.Resources中,整个项目所有加载效果都使用该资源,如果放在Window.Resources中,Window中的所有加载效果都使用该资源,以此类推。以下都是合法的代码。

 

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

<Window.Resources>
    <controls:CustomLoading x:Key="MaskContent" Width="35" Height="35" />
</Window.Resources>

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

添加文字

<Window.Resources>
    <TextBlock x:Key="MaskContent" Text="加载中..." HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="22" FontWeight="Bold" Foreground="White" />
</Window.Resources>

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

 添加进度条控件

<Window.Resources>
    <ProgressBar x:Key="MaskContent" Width="150" Height="15" HorizontalAlignment="Center" VerticalAlignment="Center" IsIndeterminate="True" />
</Window.Resources>

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

  • 方式二:单独添加的方式

<Grid extensions:FrameworkElementExtension.IsLoading="{Binding IsLoading}">
    <extensions:FrameworkElementExtension.MaskContent>
        <TextBlock Text="加载中..." HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="22" FontWeight="Bold" Foreground="White"/>
    </extensions:FrameworkElementExtension.MaskContent>
</Grid>

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

 四.综合案例

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

如需以上代码,请到群(661224882)共享文件中下载文章来源地址https://www.toymoban.com/news/detail-844097.html

到了这里,关于可能是迄今为止最好用的WPF加载动画功能(没有之一)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 目前最好用的NAS系统是什么?

    NAS被定义为一种特殊的专用数据存储服务器,包括存储器件(例如磁盘阵列、CD/DVD驱动器、磁带驱动器或可移动的存储介质)和内嵌系统软件,那么目前 最好用的nas系统 是什么? Nas 系统一般都是基于 Linux 的,常见的大致有下面这些:群晖的DSM、威联通的 QTS、Unraid、FreeNA

    2024年01月16日
    浏览(26)
  • 黑客入门——最好用的渗透测试工具

    渗透测试就是模拟真实黑客的攻击手法对目标网站或主机进行全面的安全评估,与黑客攻击不一样的是,渗透测试的目的是尽可能多地发现安全漏洞,而真实黑客攻击只要发现一处入侵点即可以进入目标系统。 一名优秀的渗透测试工程师也可以认为是一个厉害的黑客,也可以

    2024年02月16日
    浏览(26)
  • Camtasia2023最好用的电脑屏幕录制软件

    Camtasia2023是市场上最好的录像机和屏幕录制软件之一。强大的软件视频编辑程序的Camtasia 适用于Windows和iOS。 它支持多种流行的媒体格式,并对您创建的视频提供令人印象深刻的控制范围。3000多万专业人士在全球范围内使用Camtasia展示产品,教授课程,培训他人,以更快的速

    2024年02月03日
    浏览(32)
  • 最好用的七大顶级 API 接口测试工具

    本文首发:最好用的七大顶级 API 接口测试工具 - 卡拉云 【完整版】 现在 API 接口已经成为软件开发重要的组成部分,由于 API 并没有 GUI 图形界面,无法直观的对接口进行测试,所以对于前后端开发来说,找到一套趁手的工具对 API 接口进行测试,了解开发的程序是否符合预

    2024年02月05日
    浏览(30)
  • 超级丝滑!2023年最好用的十大Mac软件

    与Windows相比,Mac上的软件,不仅不稀缺,并且大多数都更加精致,还没有乱七八糟烦人的弹窗骚扰!所以,本期就为大家盘点一下2023年Mac上超好用的10款软件神器! https://www.downie.cn/ 支持平台:Mac 主要功能:下载视频 非常好用的视频下载软件,支持多达1000多个网站,包括

    2024年02月05日
    浏览(24)
  • 国内最好用的AI工具,都是免费滴,有画图哦

    人不走空                                                                          目录         🌈个人主页:人不走空       💖系列专栏:算法专题 ⏰诗词歌赋:斯是陋室,惟吾德馨   一、 百度文心一言 二、 阿里通义 三、 讯飞星火 四、 腾讯混元助

    2024年02月21日
    浏览(29)
  • 原地起飞!VS Code 最好用的 10 款 AI 插件

    你好,我是 EarlGrey,喜欢翻译点东西,偶尔写写代码。 点击下方卡片关注我,一起向上进击,提升自我。 后台回复“ 电子书 ”,送你一份我收藏的电子书合集。 开发人员的工具箱每年都在增加。最近,AI 工具受到热捧,质量和数量都在不断提高。 今天,我将为大家

    2024年02月03日
    浏览(31)
  • ChatGPT最好用的连接-自动写文案-代码算法最佳选择

    根据近些天各种平台ChatGPT试用测试,功能基本都大同小异,主要使用场景是机器对话,文案,代码。 ChatGPT与编程语言的结合可以在局部文案和算法方面提供帮助,但无法完全替代人工处理。具体而言,ChatGPT在以下方面有所帮助: 局部文案生成 :ChatGPT可以根据给定的要求和

    2024年02月01日
    浏览(20)
  • Logback是最好用的日志框架吗?Logback快速入门

    日志技术可以将系统执行的信息选择性的记录到指定的位置(控制台、文件中、数据库中)。随时以开关的形式控制是否记录日志,无需修改源代码,就可以取消或者记录信息。并且牛人或者第三方公司已经做好的日志记录实现代码,开发者可以直接拿来使用。 常见的日志框架

    2024年02月07日
    浏览(20)
  • 6个最好用的网盘资源搜索引擎,大汇总!

    分享 6 个 专业网盘搜索引擎 ,支持百度网盘、阿里云盘、蓝奏云盘、夸克网盘、天翼云盘、迅雷云盘等。 全都是免费网站,简单好用,必须点赞收藏! # 1. 无为盘搜 - 网盘搜索引擎界新星! 地址:https://wuweipansou.top 支持网盘:聚合搜索,阿里、百度、夸克、天翼 查看方式

    2024年02月08日
    浏览(130)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包