c# - 您如何在 WPF 中编写 throbber ("loading"或 "waiting"图形)?

标签 c# wpf wait

如何在 WPF 中编写“正在加载”或“等待”图形代码?

如果某人的页面需要加载大量信息,通常是在 Flash 网站上,您会看到一个旋转的圆圈,这通常意味着正在加载大量数据,用户需要等待.

这不仅仅是一个不错的效果。它具有现实世界的应用和重要性。如果有人打开一个没有此图形的表单或页面或窗口,而是看到一个应该显示信息的表单却看到空白字段,他的第一个想法可能是没有信息可以看到。即使光标变为等待模式,这也可能是正确的。与可能处于某种旋转状态的光标相比,广阔的空旷领域将更加真实和压倒图像。

我想我可以把一些东西放在一起。我想我可以展示一个旋转圆圈的 gif,它在开始时显示,然后在调用所有数据加载方法后隐藏。但也许有某种共享的公共(public)图形可以免费使用,但不知道这个东西到底叫什么,我不知道用什么名字或短语来搜索。他们叫什么?

此外,也许 WPF 或什至 MVVM 中已经内置了一些使用它的东西。有没有?另外,也许有人想出了一种方法,可以在显示旋转圆圈的同时使整个表单或页面变成灰色和非事件状态,并且很友好地分享了它。这是真的吗?

最佳答案

在我看来,您是在问一堆不同的问题。所以,虽然我通常不喜欢零碎的回复,但这里是:

But maybe there is some sort of shared common graphic to use for free and without knowing exactly what this thing is called, I do not know what name or phrase to use to search for one. What are they called?

我确定网络上有您可以使用的免版税图片。我可能会搜索“忙碌光标”甚至“沙漏”,因为直到最近,主要操作系统都是这样呈现它们的。

Also, maybe there is something already build into WPF or WCF or even MVVM that uses this. Is there?

首先,我们最好弄清楚我们的条款:

  • MVVM 没有“内置”任何东西,因为它是一种编程模式,而不是框架。有很多 implementations它的,但我不知道是否有任何包含特定的图形元素。可能是!
  • WCF 是 Windows Communication Foundation,它的库几乎肯定不包含任何图形元素。
  • WPF 是 Windows Presentation Foundation,您可以在其中找到(或定义自己的)图形元素。它确实包含 progress bar ,但是尽管您可以自定义任何 WPF 控件的外观,它实际上是为了显示从起点到终点的进度。那可能不是你想要的。不过,WPF 当然可以显示动画图像。这是 an example from SO for displaying animated GIFs .

Also, maybe someone has worked out a way to make the whole form or page gray and inactive while displaying a rotating circle and has been kind enough to share it. Is this true?

几乎可以肯定。同样,您可以在此处采用多种方法。其中一些在 this question 中提到。 , 例如。搜索“叠加层”或“启动画面”可以为您指明正确的方向。简而言之(在 WPF 中):

  • 通过设置其控件的Inactive 属性和/或捕获Preview(Key|Mouse)Down 事件使页面“处于非事件状态”
  • 通过在页面顶部显示一个半透明元素(例如 GridRectangle)使页面“变灰”。根据您执行此操作的方式,它也可能会处理使底层控件“处于非事件状态”(不要在此引用我的话,但我相信像 Rectangle 这样的元素会拦截鼠标点击,因此用户无法点击它下面的控件...)

关于c# - 您如何在 WPF 中编写 throbber ("loading"或 "waiting"图形)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4208505/

相关文章:

c# ToList() 和 ToString()

c# - 应用程序启动时出现 ValidationError XamlParseException

wpf - 窗口与用户控件

创建 HTML 表单并返回用户输入的 JavaScript 函数

java - 创建一个 for 循环等待方法返回 true

c# - 在 asp.net mvc 中回发后如何清除字段?

c# - 如何获取传递给方法的泛型 Func<T> 的方法名称

c# - 子类上的 NHibernate (3.1) 子查询未加入基类表

WPF:旋转后获取新坐标

java - 同一对象上的同步块(synchronized block)是否真的阻止其他线程执行该 block ?