gpt4 book ai didi

c# - 在 XAML ProgressBar 的 ValueChanged 事件上绑定(bind)平滑动画

转载 作者:行者123 更新时间:2023-11-30 18:31:00 24 4
gpt4 key购买 nike

我对此进行了很多搜索,但找不到适合我的具体情况的解决方案:

首先,我在做一个小小的下载管理器,我在 listview 元素中列出了我所有的下载。我的 Listview(名为 downloadListXaml)有一些 GridViewColumn 绑定(bind)到我的元素(诸如文件名、文件大小和进度条之类的东西)。每个下载都由一个单独的线程管理,每个线程只更新绑定(bind)到我的ProgressBarprogress 值。

在我最初的项目中,每个线程都会在 Progress 的每次更改时刷新 UI,但这有时会导致整个 UI 卡住。所以我创建了一个单独的线程,每 100 毫秒刷新一次我的 Listview,并且仅当某些下载线程处于事件状态时,这里是用于刷新的简单代码:

downloadListXaml.Items.Refresh();

这行得通并且 UI 总是响应迅速,但进度条动画只是每 100 毫秒跳到下一个值,一点都不好看。

我想快速刷新它,我找到了一些解决方案,如下所示:How to update a progress bar so it increases smoothly?

该解决方案中的问题是我需要引用我的ProgressBar xaml 元素,但我只能访问我的对象绑定(bind)ProgressBar.

所以,我认为我唯一的解决方案是解决这个 XAML-Side,将动画附加到 ProgressBarValueChanged 事件。

我真的是 XAML 的新手,我什至不确定我能做到这一点。这可能吗?我该怎么做?

TL;DR version:当 ProgressBar 值绑定(bind)时,我不知道如何为仅在 XAML 中工作的 ProgressBar 值更改设置动画到代码端托管对象。

最佳答案

我使用了这个答案中的 ProgressBarSmoother 实现:How to update a progress bar so it increases smoothly?

它运行良好,但在我的例子中,它试图将 ProgressBar 从 0 设置为正确值。所以我必须在绑定(bind)到 ListView 的对象中添加“last drawn value”,并从该值到当前进度值设置动画。

也许不是最好的解决方案,但看起来真的很流畅,而且 UI 响应迅速!我喜欢这样:)

关于c# - 在 XAML ProgressBar 的 ValueChanged 事件上绑定(bind)平滑动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20759619/

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