Windows应用商店8.1。页面之间的XAML进度条

时间:2014-08-29 07:55:10

标签: c# xaml windows-store-apps windows-8.1

我的Windows 8.1 Store App中的页面出现问题需要花费很长时间才能呈现 - 这是一个网格,其中包含许多列和行,这些列和行在加载页面时会绑定到数据。 加载数据的速度不是很慢,而是数据与网格的实际绑定。

我理想地想要显示一个对话栏,向用户表明正在加载某些内容并且他们已经点击了上一个导航按钮。

我看到有人提到有一个"加载页面的可能性"其中只有一个进度条 - 我认为这个解决方案可能有效但我无法在加载页面的哪个位置找到实际的页面。

即。 用户点击调用

的按钮
this.Frame.Navigate(typeof(LoadingPage));

加载页面显示进度条

我知道需要能够打电话

this.Frame.Navigate(typeof(ActualPage));

当ActualPage加载时,用户会看到进度条。

非常感谢任何建议,谢谢!

2 个答案:

答案 0 :(得分:1)

感谢DEVExpress的支持团队,我解决了我的问题。

首先,在需要时间加载的页面上,我已将Grid包装在ContentControl中

<ContentControl Visibility="Collapsed" Name="Content">
    <!-- Grid in here -->
</ContentControl>

然后我添加了一个TextBlock,我将用它来显示“Loading ...”到我的页面。我已经调用了这个控制指示器。

<TextBlock x:Name="indicator" Text="Loading..." />

我已将以下方法附加到使用计时器的页面的Loaded事件

void MainPage_Loaded(object sender, RoutedEventArgs e)
{

    indicator.Visibility = Windows.UI.Xaml.Visibility.Visible;
    DispatcherTimer t = new DispatcherTimer { Interval = TimeSpan.FromSeconds(1) };
    t.Tick += (dd, ee) =>
    {
        t.Stop();
        Content.Visibility = Windows.UI.Xaml.Visibility.Visible;
    };
    t.Start();
}

然后当gridcontrol加载时,我隐藏了指示符TextBlock

void gridControl_Loaded(object sender, RoutedEventArgs e)
{
    indicator.Visibility = Windows.UI.Xaml.Visibility.Collapsed;
}

这对我来说很有效。我无法使用Windows 8 ProgressBar控件,因为动画加载在加载网格的同一个线程上 - 但我很高兴有任何指标。

还要感谢Brian Stump指出我正确的方向。

答案 1 :(得分:0)

首先,我建议使用ListView或GridView来显示数据绑定对象,因为内置的UI虚拟化。

但是,这可能适合您的情况。

您知道您的网页何时可以展示?如果是这样,请在后台加载网格时在网格前放置一个进度环

<Grid x:Name="FullPageGrid">
        <Grid x:Name="YourGridContent">

        </Grid>
        <Grid Background="White" Visibility="Visible" x:Name="ProgressRingGrid">
            <ProgressRing IsActive="True"></ProgressRing>
        </Grid>
</Grid>

当数据完全加载时,更改&#34; ProgressRingGrid&#34; to Visibility =&#34; Collapsed&#34;