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

C# Windows应用商店8.1。页面之间的XAML进度条,c#,xaml,windows-store-apps,windows-8.1,C#,Xaml,Windows Store Apps,Windows 8.1,我的Windows 8.1应用商店应用程序中有一个页面出现问题,需要很长时间才能呈现-这是一个网格,有许多列和行,在加载页面时绑定到数据。 缓慢的不是数据加载,而是数据与网格的实际绑定 理想情况下,我希望显示一个对话框,向用户指示正在加载某些内容,并且他们已经单击了上一个导航按钮OK 我看到有人提到可能有一个“加载页面”,其中只有一个进度条-我认为这个解决方案可能会工作,但我无法确定在加载页面的情况下,我应该导航到实际页面 i、 e。 用户单击调用的按钮 this.Frame.Navigate(

我的Windows 8.1应用商店应用程序中有一个页面出现问题,需要很长时间才能呈现-这是一个网格,有许多列和行,在加载页面时绑定到数据。 缓慢的不是数据加载,而是数据与网格的实际绑定

理想情况下,我希望显示一个对话框,向用户指示正在加载某些内容,并且他们已经单击了上一个导航按钮OK

我看到有人提到可能有一个“加载页面”,其中只有一个进度条-我认为这个解决方案可能会工作,但我无法确定在加载页面的情况下,我应该导航到实际页面

i、 e。 用户单击调用的按钮

this.Frame.Navigate(typeof(LoadingPage));
加载页面显示一个进度条

我知道你需要打电话

this.Frame.Navigate(typeof(ActualPage));
用户在实际页面加载时看到进度条


如有任何建议,将不胜感激,谢谢

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

然而,也许这对你的情况有用

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

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

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


数据完全加载后,将“ProgressRingGrid”的可见性更改为visibility=“Collapsed”

多亏了DEVExpress的支持团队,我找到了问题的解决方案

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

<ContentControl Visibility="Collapsed" Name="Content">
    <!-- Grid in here -->
</ContentControl>
然后,当gridcontrol加载后,我隐藏指示器TextBlock

void gridControl_Loaded(object sender, RoutedEventArgs e)
{
    indicator.Visibility = Windows.UI.Xaml.Visibility.Collapsed;
}
这对我来说非常合适。我不能使用Windows 8 ProgressBar控件,因为动画加载到加载网格的同一线程上-但我很高兴有任何指示器

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

也谢谢Brian Stump给我指出了正确的方向。

你会考虑使用GRIDVIEW吗?取决于您的数据模型,但gridview有内置的UI虚拟化策略以增量加载对象。感谢您的建议-不幸的是,它是第三方网格控件,因此我无法使用虚拟化选项。我已经联系了第三方,看看他们是否有任何建议。而且据我所知,我不认为我有任何方法知道页面已经完成加载-如果有一些事件可以在加载所有内容后立即触发,那将是完美的。然后我会将网格的可见性设置为折叠,让页面加载和用户看到他们已经导航,然后更改网格的可见性。我甚至想在计时器上做这件事。你是在使用数据模板来设置网格中的对象吗?每个框架元素将有一个“已加载”事件,您可以将事件处理程序附加到该事件。如果可以找到要加载的最后一个元素,则更改事件处理程序中的可见性。我已尝试将事件处理程序附加到所有控件的已加载事件,但这些事件似乎都在页面实际显示之前触发。您是说最后一个要加载的控件的已加载事件将在显示页面后激发?已加载事件将在呈现内容时激发。如果您使用的是来自第三方的自定义控件,那么之后可能会进行一些额外的渲染。您使用的是什么控件?
void gridControl_Loaded(object sender, RoutedEventArgs e)
{
    indicator.Visibility = Windows.UI.Xaml.Visibility.Collapsed;
}