【问题标题】:GridView is not scrollable during dataBinding?GridView 在数据绑定期间不可滚动?
【发布时间】:2013-01-14 02:49:17
【问题描述】:

我正在创建一个 Windows 8 应用程序(不是桌面应用程序)。 我的问题如下: 我有一个 GridView 有很多项目(从数据库接收)。当您到达显示此 GridView 的页面时,您将立即看到其中的一些数据,但根据您的硬件,您将无法在开始时滚动它,只有几秒钟后(在 Surface这是 2-3 秒)。这当然是糟糕的用户体验。 我想,我会向用户使用一些进度条或活动指示器,但我不知道什么时候停止显示它。

是否有一些属性、方法、事件或其他东西可以帮助我找出什么时候可以真正开始滚动GridView

【问题讨论】:

    标签: c# xaml data-binding gridview windows-8


    【解决方案1】:

    我没有完美的答案,如果有的话我也想知道,但这里有几个建议:

    • 尽可能使用虚拟化。我们在 Surface 上也遇到了严重的性能问题,切换到虚拟化面板有很大帮助。

    • 您可以尝试在 GridView 中的每个项目上侦听 Loaded 事件,一旦加载了 100% 的项目,启用滚动或隐藏进度 UI 应该是安全的。

    【讨论】:

      【解决方案2】:

      示例:

      <Window x:Class="WpfApplication1.Window1"
          xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
          xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
          Title="Window1" Height="300" Width="300">
          <Grid>
              <Grid.RowDefinitions>
                  <RowDefinition Height="*"/>
                  <RowDefinition Height="*"/>
              </Grid.RowDefinitions>
      
              <ScrollViewer VerticalScrollBarVisibility="Auto" Grid.Row="1">
                  <ListView Name="listView" Margin="5" Grid.Row="1">
      
                      <ListView.View>
                          <GridView AllowsColumnReorder="True">
                              <GridViewColumn DisplayMemberBinding="{Binding Path=.}" Header="Whatever" Width="140"/>
                          </GridView>
                      </ListView.View>
                  </ListView>
              </ScrollViewer>
          </Grid>
      </Window>
      

      【讨论】:

      • 感谢您的回答。我忘了在描述中提到它是一个 Windows 8 应用程序(不是桌面应用程序)。我认为您的解决方案适用于桌面应用程序。据我所知,它不适用于商店应用程序(又名“地铁风格”)。我在这方面更新了我的问题。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多