UWP C# ListView不可滚动

3

我有一个ListView:

<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
    <ScrollViewer VerticalScrollBarVisibility="Visible" VerticalScrollMode="Enabled">
        <ListView x:Name="entryList" Width="360">
            <ListView.ItemTemplate>
                <DataTemplate>
                    <StackPanel BorderBrush="Gray">
                        <TextBlock Text="{Binding title}"></TextBlock>
                        <TextBlock Text="{Binding description}"></TextBlock>
                        <TextBlock Text="{Binding author}"></TextBlock>
                    </StackPanel>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>
    </ScrollViewer>
</Grid>

我通过调用一个单独的方法从Web服务获取我的ItemsSource数据(一切都很好)

private async void Page_Loading(Windows.UI.Xaml.FrameworkElement sender, object args)
{
    entryList.ItemsSource = await webserviceManager.getItems(param1, param2);
}

我的ListView也充满了项目,但我无法弄清为什么它不能垂直滚动。检查ScrollableHeight始终为0,所以我认为问题在于项目,该控件尚未将其视为逻辑项目。如果我给ScrollViewer一个具体的高度,一切都很好 - 但这对我来说不是可行的解决方案,因为我不知道应用程序将在哪个设备上运行。所以我没有任何想法可以做些什么,也许有人可以帮助我吗?

编辑:数据源得到了

ObservableCollection<entryObject> objlist = new ObservableCollection<NewsObject>();

entryObject是一个简单的数据持有类,具有字符串属性。

2个回答

5
我已经解决了这个问题-通过将所有的StackPanel更改为带有RowDefinitions的Grid。
    <ListView x:Name="entryList" Width="360">
        <ListView.ItemTemplate>
            <DataTemplate>
                <Grid BorderBrush="Gray">
                    <Grid.RowDefinitions>
                        <RowDefinition></RowDefinition>
                        <RowDefinition></RowDefinition>
                        <RowDefinition></RowDefinition>
                    </Grid.RowDefinitions>
                    <TextBlock Text="{Binding title}" Grid.Row="0"></TextBlock>
                    <TextBlock Text="{Binding description}" Grid.Row="1"></TextBlock>
                    <TextBlock Text="{Binding author}" Grid.Row="2"></TextBlock>
                </Grid>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>

我使用基本的SplitView更改了我的MainPage,其中内容面板中的框架通过ListView调用页面。这里有一个Grid.Row现在有一个常量高度 - 这似乎有点奇怪,但现在一切都正常工作。

<SplitView.Content>
    <Grid x:Name="mainPagePanel">
        <Grid.RowDefinitions>
            <RowDefinition Height="50"></RowDefinition>
            <RowDefinition></RowDefinition>
        <Button x:Name="HamburgerButton" FontFamily="Segoe MDL2 Assets" Content="&#xE700;" Width="50" Height="50" Background="Transparent" Click="HamburgerButton_Click" Grid.Row="0"/>                
        <Frame x:Name="viewFrame" Grid.Row="1"></Frame>
    </Grid>            
</SplitView.Content>

0

ListView已经在样式中包含了ScrollViewer。所以,只需移除你内部的ScrollViewer

<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
    <ListView x:Name="entryList" Width="360">
        <ListView.ItemTemplate>
            <DataTemplate>
                <StackPanel BorderBrush="Gray">
                    <TextBlock Text="{Binding title}"></TextBlock>
                    <TextBlock Text="{Binding description}"></TextBlock>
                    <TextBlock Text="{Binding author}"></TextBlock>
                </StackPanel>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>
</Grid>

嗨,Andrii,谢谢你的回答,但这并没有改变任何事情。 - Karen H.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接