gpt4 book ai didi

WPF 进度条动画速度

转载 作者:行者123 更新时间:2023-12-04 20:20:13 25 4
gpt4 key购买 nike

我注意到 WPF 进度条和 WinForms 进度条完全填充所需的时间有所不同。

完全填充,如在 Forms 和 WPF 中将 Value 设置为 100,可以注意到 WinForms 平滑地填充条,而 WPF 立即填充它。

我想知道是否有我们可以在模板中编辑的属性来更改它。

希望我说清楚了,如果有人愿意,我也可以发布视频。

编辑

Here's a video我在说什么,注意区别吗?

编辑 2

用计时器填充进度条?

using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media.Animation;

namespace WpfApplication2
{
public partial class MainWindow : Window
{
public MainWindow()
{
this.InitializeComponent();
this.Title = "WPF Progress Bar Demo";
}

private void fill(int from, int to)
{
Duration duration = new Duration(TimeSpan.FromSeconds(0.5));
DoubleAnimation doubleanimation = new DoubleAnimation(from, to, duration);
progb.BeginAnimation(ProgressBar.ValueProperty, doubleanimation);
}

private void fill_Click(object sender, RoutedEventArgs e)
{
fill(0, 100);
}
}
}

可以吗?它可以在任何地方使用吗?

随意改变它。

谢谢。

最佳答案

这个想法是进度条报告实际进度 - 而不是耗时。它并非旨在成为仅表明某事正在发生的动画。

基本原理是你绑定(bind)Value到 DataContext 类的属性,并在出现进度里程碑时更新该值。

您可以使用计时器使其以指定的速率填充 - 这是一个示例:

<Window x:Class="WpfApplication3.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<ProgressBar Value="{Binding Path=ProgressValue}"></ProgressBar>
</Grid>

和代码:
  public partial class MainWindow : Window, INotifyPropertyChanged
{
Timer timer;
public MainWindow()
{
InitializeComponent();
this.DataContext = this;
timer = new Timer();
timer.Interval = 1000;
timer.Elapsed += new ElapsedEventHandler(t_Elapsed);
timer.Start();
}

void t_Elapsed(object sender, ElapsedEventArgs e)
{
if (this._progressValue < 100)
this.ProgressValue = _progressValue + 10;
else
{
timer.Stop();
timer.Dispose();
}
}

private double _progressValue;
public double ProgressValue
{
get { return _progressValue; }
set
{
_progressValue = value;
RaisePropertyChanged("ProgressValue");
}
}

private void RaisePropertyChanged(string propName)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(propName));
}
public event PropertyChangedEventHandler PropertyChanged;
}

关于WPF 进度条动画速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7396044/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com