最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用WPF實(shí)現(xiàn)加載動(dòng)畫效果

 更新時(shí)間:2024年03月29日 09:57:22   作者:趨時(shí)軟件  
在應(yīng)用程序加載大量數(shù)據(jù)或執(zhí)行復(fù)雜操作時(shí),為用戶提供一個(gè)良好的加載體驗(yàn)變得至關(guān)重要,加載動(dòng)畫是其中一個(gè)有效的方式,下面我們就來看看如何使用WPF實(shí)現(xiàn)簡單的加載動(dòng)畫效果吧

前言

當(dāng)我們?cè)陂_發(fā)應(yīng)用程序時(shí),用戶體驗(yàn)往往是至關(guān)重要的一環(huán)。在應(yīng)用程序加載大量數(shù)據(jù)或執(zhí)行復(fù)雜操作時(shí),為用戶提供一個(gè)良好的加載體驗(yàn)變得至關(guān)重要。加載動(dòng)畫是其中一個(gè)有效的方式,它不僅能夠告知用戶應(yīng)用程序正在進(jìn)行工作,還能夠緩解用戶在等待過程中的焦慮感。

一、需求分析

開發(fā)一個(gè)加載動(dòng)畫比較常見的做法一般有以下兩種。

一種是直接在控件的上層添加一層半透明遮罩,在遮罩上面顯示加載動(dòng)畫,需要顯示加載效果的時(shí)候?qū)⑦@個(gè)遮罩顯示出來,加載完成以后隱藏這個(gè)遮罩,這種方式雖然也能實(shí)現(xiàn)需求,但是缺點(diǎn)也很明顯,每次要使用加載效果的時(shí)候都需要單獨(dú)添加遮罩代碼,單獨(dú)寫控制顯示和隱藏的代碼,一個(gè)項(xiàng)目頁面那么多,每次都這樣整,那不得把人整崩潰了。

還有一種實(shí)現(xiàn)方式是開發(fā)一個(gè)控件,在這個(gè)控件當(dāng)中實(shí)現(xiàn)遮罩的效果,然后用這個(gè)控件把頁面內(nèi)容包起來,這樣直接控制這個(gè)控件的屬性就能實(shí)現(xiàn)遮罩效果,這也是很多第三方控件庫的實(shí)現(xiàn)方式。這種方式在易用性上雖然有所提升,但是還是有上面的問題,每個(gè)要用的地方都得Copy一次代碼。

今天我們這里使用第三種方式,那就是使用裝飾器來實(shí)現(xiàn)這個(gè)功能,它的優(yōu)點(diǎn)就是對(duì)源代碼侵入很小,不用每次使用都Copy大段代碼,并且可擴(kuò)展性非常強(qiáng)。

二、基本用法

以下為示例代碼,當(dāng)ViewModel中的IsLoading屬性值為True時(shí),就會(huì)觸發(fā)Loading動(dòng)畫。

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測(cè)試"
    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); }
        }
    }
}

運(yùn)行效果:

三、高級(jí)用法

3.1 FrameworkElementExtension.IsLoading只能在Grid上使用嗎?

答:No,幾乎所有控件都可以使用,Window、Page、UserControl、Panel、Button、Rectangle、Path、TextBox等等,都沒問題,只需要將IsLoading設(shè)置為True,就會(huì)出現(xiàn)Loading效果。

3.2 我覺得加載動(dòng)畫不好看,有沒有辦法換成其它的?

答:當(dāng)然可以,除了默認(rèn)加載效果以外,還可以添加任意你喜歡的效果,不管它是文字、動(dòng)畫、視頻、gif圖片還是其它的東西,通通都可以,并且操作非常簡單,一共有兩種方式。

方式一:統(tǒng)一添加的方式

只需在Resources中添加一個(gè)名為MaskContent的資源,在觸發(fā)加載遮罩顯示的時(shí)候就會(huì)自動(dòng)讀取該資源作為動(dòng)畫元素,如果放在App.Resources中,整個(gè)項(xiàng)目所有加載效果都使用該資源,如果放在Window.Resources中,Window中的所有加載效果都使用該資源,以此類推。以下都是合法的代碼。

添加自定義動(dòng)畫效果(用戶控件)

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

添加文字

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

添加進(jìn)度條控件

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

方式二:單獨(dú)添加的方式

<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>

四、綜合案例

到此這篇關(guān)于使用WPF實(shí)現(xiàn)加載動(dòng)畫效果的文章就介紹到這了,更多相關(guān)WPF加載動(dòng)畫內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • c#漢諾塔的遞歸算法與解析

    c#漢諾塔的遞歸算法與解析

    c#漢諾塔的遞歸算法與解析,需要的朋友可以參考一下
    2013-03-03
  • C#格式化數(shù)字字符串的方法

    C#格式化數(shù)字字符串的方法

    這篇文章主要為大家詳細(xì)介紹了C#格式化數(shù)字字符串的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • 詳解c#中Array,ArrayList與List<T>的區(qū)別、共性與相互轉(zhuǎn)換

    詳解c#中Array,ArrayList與List<T>的區(qū)別、共性與相互轉(zhuǎn)換

    本文詳細(xì)講解了c#中Array,ArrayList與List<T>的區(qū)別、共性與相互轉(zhuǎn)換,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-12-12
  • C#簡單了解接口(Interface)使用方法

    C#簡單了解接口(Interface)使用方法

    這篇文章主要介紹了C#簡單了解接口(Interface)使用方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09
  • C# 監(jiān)控 Windows 文件夾的方法

    C# 監(jiān)控 Windows 文件夾的方法

    這篇文章主要介紹了C# 監(jiān)控 Windows 文件夾的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-03-03
  • C#自動(dòng)刪除Word文檔空白行和空白頁的完整代碼

    C#自動(dòng)刪除Word文檔空白行和空白頁的完整代碼

    在處理 Word 文檔時(shí),經(jīng)常會(huì)遇到空白行、空表格或空白頁的問題,這不僅影響排版美觀,還可能導(dǎo)致文檔頁數(shù)冗余,所以本文將介紹如何使用 Spire.Doc for .NET 在 C# 中自動(dòng)刪除 Word 文檔的空白行、空表格和空白頁,需要的朋友可以參考下
    2025-08-08
  • C#使用NOPI庫實(shí)現(xiàn)導(dǎo)入Excel文檔

    C#使用NOPI庫實(shí)現(xiàn)導(dǎo)入Excel文檔

    NPOI中N指代的是.Net,POI是一個(gè)完全開源的Java寫成的庫,能夠在沒有安裝微軟Office或者相應(yīng)環(huán)境的情況下讀寫Excel、Word等微軟OLE2組件文檔,幾乎支持所有的Office97~Office2007的文件格式。所以NPOI就是POI項(xiàng)目的.Net版本。
    2017-05-05
  • C#如何取硬件標(biāo)志

    C#如何取硬件標(biāo)志

    C#如何取硬件標(biāo)志...
    2007-03-03
  • 詳解C#編程獲取資源文件中圖片的方法

    詳解C#編程獲取資源文件中圖片的方法

    這篇文章主要介紹了詳解C#編程獲取資源文件中圖片的方法的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • unity實(shí)現(xiàn)屏幕上寫字效果

    unity實(shí)現(xiàn)屏幕上寫字效果

    這篇文章主要為大家詳細(xì)介紹了unity實(shí)現(xiàn)屏幕上寫字效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-07-07

最新評(píng)論

囊谦县| 崇仁县| 育儿| 安仁县| 河源市| 马龙县| 阿拉尔市| 香港 | 长阳| 扬中市| 封丘县| 阿城市| 澎湖县| 西盟| 津市市| 正镶白旗| 葵青区| 济南市| 抚顺县| 聂荣县| 东阿县| 柳林县| 峨边| 资兴市| 南靖县| 普兰店市| 苍山县| 南部县| 平武县| 永宁县| 长沙市| 宾川县| 景宁| 湘潭市| 鞍山市| 施秉县| 稷山县| 永嘉县| 六枝特区| 永胜县| 哈尔滨市|