ScrollView无法在Windows 10中运行

时间:2015-12-06 21:15:10

标签: c# data-binding windows-10 uwp

我有一个有大约200个联系人的ViewModel,我将它绑定到ListView

<Grid>
    <ScrollViewer         
        HorizontalScrollBarVisibility="Auto" 
        VerticalScrollBarVisibility="Auto">
        <ListView x:Name="ContactListing" ItemsSource="{Binding ContactListing}"  >
            <ListView.ItemTemplate>
                <DataTemplate>
                    <StackPanel Orientation="Horizontal">
                        <TextBlock Text="{Binding Path=DisplayName}" />
                        <Image Source="{Binding Thumbnail,Converter={StaticResource ResourceKey=contactConv}}" />
                    </StackPanel>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>
    </ScrollViewer>
</Grid>

如果有人可以解释ScrollViewers可见性背后的细节

,那将会很棒

1 个答案:

答案 0 :(得分:2)

ListView控件已包含ScrollViewer并根据项目数量实现滚动,无需将此控件包装在另一个ScrollViewer中。您可以在包含所有Windows 10样式的generic.xaml文件中的第6219行的ListView的默认ControlTemplate中仔细检查:

  

C:\ Program Files(x86)\ Windows Kits \ 10 \ DesignTime \ CommonConfiguration \ Neutral \ UAP \ 10.0.10240.0 \ Generic \ generic.xaml

因此,您只需从XAML片段中删除ScrollViewer

<Grid>
    <ListView x:Name="ContactListing" ItemsSource="{Binding ContactListing}"  >
        <ListView.ItemTemplate>
            <DataTemplate>
                <StackPanel Orientation="Horizontal">
                    <TextBlock Text="{Binding Path=DisplayName}" />
                    <Image Source="{Binding Thumbnail,Converter={StaticResource ResourceKey=contactConv}}" />
                </StackPanel>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>
</Grid>

注意:当您使用ListView时,我想您希望所有商品都堆叠在一起。如果您希望多列显示您的商品,请改用GridView