UWP C# ListView 不可滚动
UWP C# ListView not scrollable
我有这个 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 一个具体的高度,一切都很好——但这不是可行的解决方案,因为我不知道应用程序稍后会在哪个设备上 运行。所以我不知道我还能做什么,也许有人可以帮助我?
编辑:DataSource 得到了一个
ObservableCollection<entryObject> objlist = new ObservableCollection<NewsObject>();
其中 entryObject 是一个包含 class 和字符串属性的简单数据。
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>
我已经解决了问题 - 通过将所有 StackPanel 更改为具有 RowDefinitions 的网格。
<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.Rows 现在高度恒定 - 看起来有点奇怪,但现在一切正常。
<SplitView.Content>
<Grid x:Name="mainPagePanel">
<Grid.RowDefinitions>
<RowDefinition Height="50"></RowDefinition>
<RowDefinition></RowDefinition>
<Button x:Name="HamburgerButton" FontFamily="Segoe MDL2 Assets" Content="" Width="50" Height="50" Background="Transparent" Click="HamburgerButton_Click" Grid.Row="0"/>
<Frame x:Name="viewFrame" Grid.Row="1"></Frame>
</Grid>
</SplitView.Content>
我有这个 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 一个具体的高度,一切都很好——但这不是可行的解决方案,因为我不知道应用程序稍后会在哪个设备上 运行。所以我不知道我还能做什么,也许有人可以帮助我?
编辑:DataSource 得到了一个
ObservableCollection<entryObject> objlist = new ObservableCollection<NewsObject>();
其中 entryObject 是一个包含 class 和字符串属性的简单数据。
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>
我已经解决了问题 - 通过将所有 StackPanel 更改为具有 RowDefinitions 的网格。
<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.Rows 现在高度恒定 - 看起来有点奇怪,但现在一切正常。
<SplitView.Content>
<Grid x:Name="mainPagePanel">
<Grid.RowDefinitions>
<RowDefinition Height="50"></RowDefinition>
<RowDefinition></RowDefinition>
<Button x:Name="HamburgerButton" FontFamily="Segoe MDL2 Assets" Content="" Width="50" Height="50" Background="Transparent" Click="HamburgerButton_Click" Grid.Row="0"/>
<Frame x:Name="viewFrame" Grid.Row="1"></Frame>
</Grid>
</SplitView.Content>