为什么特别是这个ListView不能滚动?

时间:2014-01-01 19:34:07

标签: c# xaml scroll windows-8.1

我正在使用C#和XAML为Windows App Store编程(Windows 8.1)。 我在语义缩放中有一个ListView,当它的项目填满整个可见的地方时不会滚动。正如我通过研究发现的那样,问题很可能与封闭的ScrollViewer有关,或者静态设置Widths和Heights。

这是ListView:

<SemanticZoom.ZoomedOutView>
    <Hub Header="Overview Panel">
        <HubSection>
            <DataTemplate>
                <Grid>
                    <Grid.RowDefinitions>
                        <RowDefinition Height="*"/>
                    </Grid.RowDefinitions>

                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="120"/>
                        <ColumnDefinition Width="*"/>
                        <ColumnDefinition Width="120"/>
                    </Grid.ColumnDefinitions>

                    <StackPanel VerticalAlignment="Stretch"  Grid.Column="1" Grid.Row="1">
                        <TextBlock Text="All Assignments" FontSize="24"/>

                        <ListView
                        ItemTemplate="{StaticResource AssignmentOverviewContentTemplate}"
                        ItemsSource="{Binding AllAssignmentsList}"
                        SelectionMode="None">
                        </ListView>
                    </StackPanel>
                </Grid>
            </DataTemplate>
        </HubSection>
    </Hub>
</SemanticZoom.ZoomedOutView>
</SemanticZoom>

我也尝试将以下内容添加到ListView中或将Alignments设置为Stretch但没有任何功能真正起作用:

ScrollViewer.HorizontalScrollBarVisibility="Auto"
ScrollViewer.HorizontalScrollMode="Disabled"
ScrollViewer.VerticalScrollMode="Enabled" 

任何人都可以帮助我吗?我很抱歉,如果这是一个非常基本的问题,我现在还没有找到任何帮助我的东西。

非常感谢!

1 个答案:

答案 0 :(得分:4)

我已经解决了这个问题。

发生这种情况是因为DataTemplate中没有Space-Limiting-Container。因此,我只需添加一个简单的网格,一切正常:

<Hub Header="Overview Panel">
    <HubSection Width="{Binding ScreenWidthFourth}" Header="All Assignments">
        <DataTemplate>
            <Grid>
                <ListView                                    
                    ItemTemplate="{StaticResource AssignmentOverviewContentTemplate}"
                    ItemsSource="{Binding AllAssignmentsList}"
                    SelectionMode="None">
                </ListView>
            </Grid>
        </DataTemplate>
    </HubSection>

但请注意不要将ListView放入(在这种情况下)ListPanel中,因为StackPanel会为其子节点提供无限空间,因此永远不会启用滚动。

我仍然遇到的问题是ListView没有填充其所有垂直空间。但由于我还没有对此进行过任何研究,我将打开另一个Thread,以防我无法解决这个问题。

不管怎样,谢谢你。