Xamarin Forms显示阻塞加载消息

问题描述:

我有一个长时间运行的任务,我想显示一个进度指示器和消息。Xamarin Forms显示阻塞加载消息

我试过使用ActivityIndicator,虽然它显示正确,但它允许更新底层控件。

This XamariniOS代码正是我想要的,但我需要在使用Xamarin.Forms时做到这一点。

http://developer.xamarin.com/recipes/ios/standard_controls/popovers/display_a_loading_message/

任何想法?

创建一个自定义渲染器覆盖整个屏幕上的BoxView。您可以根据自己的喜好定制色块填充不透明度显示相关内容

然后,您可以居中Xamarin.FormsActivityIndi​​cator在屏幕中间玩完同样的效果。

注意 - 然而,目前在v1.2.3x没有对Android的尽管BoxView中的存在一个bug,让底层的控制仍然接收用户输入的事件,比如点击一个按钮, 顶上的一切

此问题在即将发布的v1.3版本中明显解决。

更新1

它不容易提取作为一个更复杂的控制它的一部分,但它不是很难得到你的链接到类似的效果。

尝试在你的页面如下: -

使用电网为基数(1行1列),并将其设置为填满整个屏幕,并设置行和列的定义, GridUnitType.Star

然后,您可以创建你的页面内容,如正常的电网孩子,这个位置在细胞(0,0)

在接下来的部分(你可以把这个在控制渲染),以便它可以很容易地在多个页面中重复使用。如果你不是舒服控制渲染,你总是可以创建一个函数返回一个电网对象然而,你可以在多个页面中使用: -

  • 电网作为基地

    • BoxView中的为一体的电网

    • 孩子
    • ActivityIndi​​cator作为的子网格。在细胞(0,0) -

一旦你从上面的电网结果,你也可以添加到您的网页的电网根控制,这个位置再

然后,您可以控制此覆盖面板在您的内容上的可见性。

你自然要设置的ActivityIndi​​catorIsRunning财产,只要你显示/隐藏面板。只需创建一些方法,如ShowActivityIndi​​cator()HideActivityIndi​​cator()也许可以简化这个。

+0

听起来像一个很好的方法皮特。您是否碰巧有任何代码显示自定义渲染器的工作方式? – 2014-10-29 20:13:09

+1

我已经更新了我的答案(请参阅*更新1 *) – Pete 2014-10-29 20:45:17

+0

感谢您的皮特。 – 2014-10-29 20:51:34