C# Xamarin ListView不显示任何数据
在XAML中将数据列表绑定到我的ListView时,我遇到了一个问题,即我试图在我的应用程序中的C# Xamarin ListView不显示任何数据,c#,xaml,listview,xamarin,C#,Xaml,Listview,Xamarin,在XAML中将数据列表绑定到我的ListView时,我遇到了一个问题,即我试图在我的应用程序中的ListView中显示数据。ListView根本不填充任何数据 以下是我所有的编码: 我的代码隐藏 有人能告诉我或让我看看我在装订方面做错了什么吗?或者如果您需要更多信息或代码,请询问!我很乐意提供更多信息。:) 编辑 我已经更新了我的RandomList类并实现了INotifyPropertyChanged,但是我仍然无法通过XAML绑定在我的ListView中加载数据 using System.C
ListView
中显示数据。ListView根本不填充任何数据
以下是我所有的编码:
我的代码隐藏
有人能告诉我或让我看看我在装订方面做错了什么吗?或者如果您需要更多信息或代码,请询问!我很乐意提供更多信息。:)
编辑
我已经更新了我的RandomList
类并实现了INotifyPropertyChanged
,但是我仍然无法通过XAML绑定在我的ListView中加载数据
using System.ComponentModel;
namespace RandomTest
{
public class RandomList : INotifyPropertyChanged
{
public int Id { get; set; }
string _name;
public string Name
{
get { return _name; }
set
{
if (_name != value)
_name = value;
OnPropertyChanged("Name");
}
}
string _surname;
public string Surname
{
get { return _surname; }
set
{
if (_surname != value)
_surname = value;
OnPropertyChanged("Surname");
}
}
string _school;
public string School
{
get { return _school; }
set
{
if (_school != value)
_school = value;
OnPropertyChanged("School");
}
}
public event PropertyChangedEventHandler PropertyChanged;
void OnPropertyChanged(string propertyName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
}
编辑2
这就是我的MainUI.xaml.cs页面目前的样子:
public partial class MainUI : ContentPage
{
public MainUI()
{
InitializeComponent();
BindingContext = new MainUIModel();
MainUIModel mainUIModel = (MainUIModel)this.BindingContext;
mainUIModel.randomList.Add(new RandomList { Name = "Susan", Surname = "Potgieter", School = "Oosterlig" });
mainUIModel.randomList.Add(new RandomList { Name = "Jonathan", Surname = "Visagie", School = "Elspark" });
mainUIModel.randomList.Add(new RandomList { Name = "Gerhard", Surname = "Vermaak", School = "E.G. Jansen" });
mainUIModel.randomList.Add(new RandomList { Name = "Kobus", Surname = "Jacobs", School = "Oosterlig" });
}
}
创建模型MainUIModel
public class MainUIModel : INotifyPropertyChanged
{
ObservableCollection<RandomList> _randomList;
public ObservableCollection<RandomList> randomList
{
get { return _randomList; }
set
{
if (_randomList != value)
_randomList = value;
OnPropertyChanged("randomList");
}
}
public event PropertyChangedEventHandler PropertyChanged;
void OnPropertyChanged(string propertyName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
Xaml中的绑定随机列表将引用这个新创建的模型,您的姓名将引用列表模型。两种绑定上下文都不同。您可以使用以下代码添加数据
MainUIModel mainUIModel = (MainUIModel)this.BindingContext;
mainUIModel.randomList=new ObservableCollection<RandomList>();
mainUIModel.randomList.Add(new RandomList { Name = "Susan", Surname = "Potgieter", School = "Oosterlig" });
mainUIModel.randomList.Add(new RandomList { Name = "Jonathan", Surname = "Visagie", School = "Elspark" });
mainUIModel.randomList.Add(new RandomList { Name = "Gerhard", Surname = "Vermaak", School = "E.G. Jansen" });
mainUIModel.randomList.Add(new RandomList { Name = "Kobus", Surname = "Jacobs", School = "Oosterlig" });
MainUIModel MainUIModel=(MainUIModel)this.BindingContext;
mainUIModel.randomList=新的ObservableCollection();
mainUIModel.randomList.Add(新的randomList{Name=“Susan”,Name=“Potgieter”,School=“Oosterlig”});
mainUIModel.randomList.Add(新的randomList{Name=“Jonathan”,姓氏=“Visagie”,School=“Elspark”});
mainUIModel.randomList.Add(新的randomList{Name=“Gerhard”,Name=“Vermaak”,School=“E.G.Jansen”});
mainUIModel.randomList.Add(新的randomList{Name=“Kobus”,Name=“Jacobs”,School=“Oosterlig”});
实际上,您所需要做的就是确保可观察的收集
有一个公共getter
。然后,您可以设置BindingContext=this
,并在UI上访问它。但与往常一样,有许多方法可以剥这些小猫的皮。您的模型中是否继承了inotifypropertychange
,您可能已将其设置为BindingContext
?您好:)否我没有类的INotifyPropertyChanged。你认为这有帮助吗?这很奇怪,因为我可以在代码中设置listview的itemsource,它会显示所有数据,但在XAML中不起作用…:|是的,这在您的模型中是必需的。@CareTaker22我将在类中测试INotifyPropertyChanged
,并让您知道它是否有效。谢谢我已经用我实现的类更新了我的类和我的问题INotifyPropertyChanged
,但它仍然没有返回任何数据。XAML中的绑定可能是错误的吗?谢谢你的回答。我按照您的建议进行了操作,但我得到了错误System.NullReferenceException:对象引用未设置为对象的实例,位于以下行:MainUIModel MainUIModel=(MainUIModel)this.BindingContext代码>。你把这一行放在哪里了?它必须在您的MainUI页面中,因为bindingcontext将在MainUI页面上设置,此
也引用您的MainUI页面。在我的公共类应用程序:应用程序
窗口中,我将虚拟数据添加到列表中。否,它将不起作用,此
将引用您的应用程序类。我已将该行添加到MainUI
页面,但它仍会给我相同的错误。我还添加了列表编码,将数据添加到我的randomList
MainUI页面。我真的不知道我是否做错了什么,但是我已经更新了我的问题,这样你就可以更好地了解我做错了什么。很抱歉给您带来不便!
public partial class MainUI : ContentPage
{
public MainUI()
{
InitializeComponent();
BindingContext = new MainUIModel();
MainUIModel mainUIModel = (MainUIModel)this.BindingContext;
mainUIModel.randomList.Add(new RandomList { Name = "Susan", Surname = "Potgieter", School = "Oosterlig" });
mainUIModel.randomList.Add(new RandomList { Name = "Jonathan", Surname = "Visagie", School = "Elspark" });
mainUIModel.randomList.Add(new RandomList { Name = "Gerhard", Surname = "Vermaak", School = "E.G. Jansen" });
mainUIModel.randomList.Add(new RandomList { Name = "Kobus", Surname = "Jacobs", School = "Oosterlig" });
}
}
public class MainUIModel : INotifyPropertyChanged
{
ObservableCollection<RandomList> _randomList;
public ObservableCollection<RandomList> randomList
{
get { return _randomList; }
set
{
if (_randomList != value)
_randomList = value;
OnPropertyChanged("randomList");
}
}
public event PropertyChangedEventHandler PropertyChanged;
void OnPropertyChanged(string propertyName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
BindingContext = new MainUIModel();
MainUIModel mainUIModel = (MainUIModel)this.BindingContext;
mainUIModel.randomList=new ObservableCollection<RandomList>();
mainUIModel.randomList.Add(new RandomList { Name = "Susan", Surname = "Potgieter", School = "Oosterlig" });
mainUIModel.randomList.Add(new RandomList { Name = "Jonathan", Surname = "Visagie", School = "Elspark" });
mainUIModel.randomList.Add(new RandomList { Name = "Gerhard", Surname = "Vermaak", School = "E.G. Jansen" });
mainUIModel.randomList.Add(new RandomList { Name = "Kobus", Surname = "Jacobs", School = "Oosterlig" });