Windows应用商店8.1.页面之间的XAML进度条
本文关键字:之间 XAML 应用 Windows | 更新日期: 2023-09-27 18:20:07
我的Windows 8.1商店应用程序中的一个页面出现问题,需要很长时间才能呈现-它是一个包含多个列和行的网格,在加载页面时绑定到数据。缓慢的不是数据的加载,而是数据与网格的实际绑定。
理想情况下,我想显示一个对话框栏,向用户指示有东西正在加载,并且他们已经点击了上一个导航按钮。
我看到有人提到了有一个"加载页面"的可能性,其中只有一个进度条——我认为这个解决方案可能可行,但我不知道在加载页面的什么情况下应该导航到实际页面。
即。用户点击调用的按钮
this.Frame.Navigate(typeof(LoadingPage));
加载页面显示进度条
我知道需要能够呼叫
this.Frame.Navigate(typeof(ActualPage));
用户在加载ActualPage时会看到进度条。
如有任何建议,我们将不胜感激!
感谢DEVExpress的支持团队,我的问题得到了解决。
首先,在需要时间加载的页面上,我将网格封装在ContentControl 中
<ContentControl Visibility="Collapsed" Name="Content">
<!-- Grid in here -->
</ContentControl>
然后我添加了一个文本块,我将使用它来显示"正在加载…"到我的页面。我称之为控制指示器。
<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();
}
然后,当网格控件已加载时,我隐藏指示器TextBlock
void gridControl_Loaded(object sender, RoutedEventArgs e)
{
indicator.Visibility = Windows.UI.Xaml.Visibility.Collapsed;
}
这对我来说非常有效。我不能使用Windows 8 ProgressBar控件,因为动画加载在加载网格的同一个线程上,但我很高兴有任何指示符。
还要感谢Brian Stump为我指明了正确的方向。
首先,由于内置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"