.NET MAUI ListView无法显示数据 求助循环加载列表的解决方法
.NET MAUI ListView 无法加载数据的修复方案
你的代码存在三个关键问题导致ListView无法显示数据,以下是具体修改步骤:
1. 将数据字段改为属性
数据绑定仅支持属性,你定义的myitemname是字段,需要调整为带get/set访问器的属性:
public class oneitem { public string myitemname { get; set; } }
2. 直接赋值ItemsSource而非使用SetBinding
你创建的MyItems是局部变量,无法通过数据绑定机制访问,直接给ListView的ItemsSource赋值即可:
修改cmdLoad_Clicked方法:
private void cmdLoad_Clicked(object sender, EventArgs e) { List<oneitem> MyItems = new List<oneitem>(); for (int i = 1;i <= 3;i++) { oneitem OneNewitem = new oneitem(); OneNewitem.myitemname = "This is item " + i.ToString(); MyItems.Add(OneNewitem); } // 直接赋值,替代原绑定代码 ListView1.ItemsSource = MyItems; }
3. 移除嵌套的ScrollView
ListView本身自带滚动功能,嵌套在ScrollView中会导致布局异常和滚动冲突,删除外层的ScrollView:
修改后的XAML:
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:Class="MauiApp1.NewPage1" Title="NewPage1"> <VerticalStackLayout> <Label Text="Welcome to .NET MAUI!" VerticalOptions="Center" HorizontalOptions="Center" /> <Button Text="Back" x:Name="cmdBack" Clicked="cmdBack_Clicked" WidthRequest="100" HorizontalOptions="Start" VerticalOptions="Start" CornerRadius="10" /> <Button Text="Load ListView" x:Name="cmdLoad" Clicked="cmdLoad_Clicked" WidthRequest="100" HorizontalOptions="Start" VerticalOptions="Start" CornerRadius="10" /> <ListView x:Name="ListView1" > <ListView.ItemTemplate> <DataTemplate> <TextCell Text="{Binding myitemname}" Detail="this is some detail text" /> </DataTemplate> </ListView.ItemTemplate> </ListView> </VerticalStackLayout> </ContentPage>
完成以上修改后,点击"Load ListView"按钮,ListView即可正常显示你期望的条目。
内容的提问来源于stack exchange,提问作者Albert D. Kallal
相关产品推荐
相关产品推荐

