2014-08-29 40 views
1

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

我最好想显示一个对话栏来向用户指出正在加载的东西,并且他们点击了上一个导航按钮。

我看到有人提到有一个“加载页面”只有一个进度条的可能性 - 我认为这个解决方案可能工作,但我不能解决什么样的加载页面的事件,我应该导航到实际的页面。

即 用户点击按钮,它调用

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

加载页面时显示进度条

我知道需要能够调用

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

用户看到进度条,而ActualPage负载。

任何建议将不胜感激谢谢!

+0

你会考虑使用gridview吗? 取决于您的数据模型,但gridview内置了UI虚拟化策略来递增加载对象。 – 2014-08-29 12:35:47

回答

1

由于改变能见度在DevExpress的技术支持团队我有一个解决我的问题。

首先,需要时间来加载我有我的包裹电网在ContentControl中

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

然后我说,我将使用以显示一个TextBlock“载入中...”我的页面在页面上。我称这个控制指标。

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

我已附加了以下方法,其使用定时器

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指引我走向正确的方向。

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> 

当数据被完全加载时,“ProgressRingGrid”知名度=“坍塌”

+0

感谢您的建议,不幸的是它是第三方网格控制,所以我无法利用虚拟化选项。我已与第三方联系,看看他们是否有任何建议。 – RCairns 2014-08-29 16:17:24

+0

另外据我所知,我不认为我有任何方式知道页面已完成加载 - 如果有一些事件一旦加载完成就可能触发,这将是完美的。然后,我将网格的可见性设置为“折叠”,最初让页面加载,用户看到它们已经导航,然后在此之后更改网格的可见性。我正想着甚至在计时器上这样做。 – RCairns 2014-08-29 16:19:57

+0

您是否使用数据模板来设置网格中的对象?每个框架元素都会有一个'Loaded'事件,您可以附加一个事件处理程序。如果您可以找到要加载的最后一个元素,则更改事件处理程序中的可见性。 – 2014-08-29 17:39:32