2

我有显示 185 列和 15 行的 Listview。为了显示 15 行的 185 列,Windows 商店应用程序需要一些时间或 UI 冻结。下面是我用来显示数据的代码

<ListView x:Name="outerlstView"   
              Height="650" 
              Margin="2,24,10,10" Grid.Row="1"
                     Grid.Column="1" BorderThickness="1"    HorizontalAlignment="Stretch" VerticalAlignment="Stretch"

ItemsSource="{Binding Data,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" ScrollViewer.Horizo​​ntalScrollBarVisibility="Visible" ScrollViewer.Horizo​​ntalScrollMode="Enabled" ScrollViewer.VerticalScrollBarVisibility="Auto"
SelectionMode="None" ShowsScrollingPlaceholders="True" IsZoomedInView="False" IsSwipeEnabled="False" IsItemClickEnabled="False" ItemContainerStyle="{StaticResource LvItemStyle}" Orientation="Vertical" VirtualizingStackPanel.VirtualizationMode="Standard"/> ShowsScrollingPlaceholders=" True">高度="{绑定路径=标签,RelativeSource={RelativeSource Mode=Self},Converter={StaticResource RowtoHeightConverter }}" >

上面的代码里面有另一个listview。当我尝试将 list> 加载到 listview 时,它需要太多时间。当我加载 100 行和 185 列时,有时应用程序会崩溃。

我尝试将 Itemtemplate 样式控件替换为 Itemstackpanel 性能很好。数据加载并更快地显示在屏幕上,但我看不到水平滚动

以前的代码

  <ListView.ItemsPanel>
            <ItemsPanelTemplate>
                <StackPanel  
                            Orientation="Vertical" VirtualizingStackPanel.VirtualizationMode="Standard"/>
            </ItemsPanelTemplate>
        </ListView.ItemsPanel>
        <ListView.ItemTemplate>

当我修改为<ListView.ItemsPanel> <ItemsPanelTemplate> <ItemsStackPanel Margin="0,0,0,0" Width="Auto" Orientation="Horizontal" Height="35" VirtualizingStackPanel.VirtualizationMode="Standard"/> </ItemsPanelTemplate> </ListView.ItemsPanel>

我没有看到启用水平滚动条。任何人都可以建议我如何在 Windows 商店应用程序中为 Itemstackpanel 启用默认启用的水平滚动条。看起来它是这个控件的错误,或者有使用水平滚动条的 ItemsStackpanel 的变通方法。

4

1 回答 1

1

如果您的 ItensSource 是具有属性名称和属性价格的对象列表,例如:

<ListView ItemsSource="{Binding Here_your_DataSource}" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" ScrollViewer.HorizontalScrollBarVisibility="Visible" ScrollViewer.VerticalScrollBarVisibility="Visible"  >

        <ListView.ItemsPanel>
            <ItemsPanelTemplate> 
                <WrapGrid Orientation="Horizontal" MaximumRowsOrColumns="15"/>
            </ItemsPanelTemplate>
        </ListView.ItemsPanel>

        <ListView.ItemTemplate>
            <DataTemplate>

                <!--Here u design your item template-->
                <StackPanel Background="Blue" Width="100" Height="100">
                    <TextBlock Text="{Binding Name}"></TextBlock>
                    <TextBlock Text="{Binding Price}"></TextBlock>
                </StackPanel>

            </DataTemplate>
        </ListView.ItemTemplate>

</ListView>
于 2014-02-24T18:46:26.420 回答