C# WPF 加载进度显示

By jerryxjr1220 at 2023-11-10 • 0人收藏 • 320人看过
<hc:GlowWindow x:Class="WPFAutomation.Views.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:model="clr-namespace:WPFAutomation.Models"
        xmlns:vm="clr-namespace:WPFAutomation.ViewModels"
        xmlns:view="clr-namespace:WPFAutomation.Views"
        xmlns:i="http://schemas.microsoft.com/xaml/behaviors"
        xmlns:local="clr-namespace:WPFAutomation"
        xmlns:hc="https://handyorg.github.io/handycontrol"
        d:DataContext="{d:DesignInstance Type=vm:MainViewModel}"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800" 
        FontFamily="JetBrains Mono" 
        FontSize="{StaticResource TextFontSize}">
    <Window.Resources>
        <BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter" />
    </Window.Resources>
    <hc:SimplePanel>
        <ScrollViewer x:Name="scrollViewer" VerticalScrollBarVisibility="Auto">
            <StackPanel>
                <Button Content="Load" Click="ButtonBase_OnClick" Style="{StaticResource ButtonPrimary}"/>
                <hc:ImageBlock Height="400" Width="400" x:Name="ImageBlock"/>
            </StackPanel>
        </ScrollViewer>
        <StackPanel VerticalAlignment="Center" HorizontalAlignment="Center"
            Visibility="{Binding IsLoading, Converter={StaticResource BooleanToVisibilityConverter}}" >
            <hc:LoadingCircle DotDiameter="10" Height="100" Width="100" />
            <TextBlock Text="{Binding LoadingProgress, StringFormat=Loading...{0}%}" FontSize="20" Style="{StaticResource TextBlockDefaultPrimary}"/>
        </StackPanel>
    </hc:SimplePanel>
</hc:GlowWindow>
using CommunityToolkit.Mvvm.ComponentModel;
using WPFAutomation.Models;

namespace WPFAutomation.ViewModels;

public partial class MainViewModel : ObservableObject
{
    [ObservableProperty] private bool _isLoading;
    [ObservableProperty] private int _loadingProgress;

    public MainViewModel()
    {
        IsLoading = false;
        LoadingProgress = 0;
    }
}
using System;
using System.Windows;
using System.Windows.Media.Imaging;
using System.Windows.Threading;
using HandyControl.Controls;
using WPFAutomation.ViewModels;

namespace WPFAutomation.Views;

/// <summary>
///     Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : GlowWindow
{
    private readonly MainViewModel mainViewModel;

    public MainWindow()
    {
        InitializeComponent();

        mainViewModel = new MainViewModel();
        DataContext = mainViewModel;
    }

    private void ButtonBase_OnClick(object sender, RoutedEventArgs e)
    {
        mainViewModel.LoadingProgress = 0;
        var timer = new DispatcherTimer();
        timer.Interval = TimeSpan.FromMilliseconds(50);
        timer.Tick += (o, args) =>
        {
            mainViewModel.LoadingProgress++;
            if (mainViewModel.LoadingProgress >= 100)
            {
                timer.Stop();
                mainViewModel.IsLoading = false;
                ImageBlock.Source =
                    new BitmapImage(new Uri(
                        "D:\\Programming\\Rider Projects\\WPFAutomation\\WPFAutomation\\bin\\Debug\\net7.0-windows\\h42.png"));
            }
        };
        mainViewModel.IsLoading = true;
        timer.Start();
    }
}


1 个回复 | 最后更新于 2023-11-10
2023-11-10   #1

还有任务栏进度

登录后方可回帖

登 录
信息栏
 私人小站

本站域名

ChengXu.XYZ

投诉联系:  popdes@126.com



快速上位机开发学习,本站主要记录了学习过程中遇到的问题和解决办法及上位机代码分享

这里主要专注于学习交流和经验分享.
纯私人站,当笔记本用的,学到哪写到哪.
如果侵权,联系 Popdes@126.com

友情链接
Aardio官方
Aardio资源网


才仁机械


网站地图SiteMap

Loading...