我正在尝试获得在Xamarin表单中的不同视图之间传递数据的基础知识。
我有个会议课,有一个可以观察到的收藏。在后面的代码中,我有另一个ObservableCollection,它用作listview的ItemSource。后面代码中的ObservableCollection工作正常,但是当我试图设置myMeeting.MeetingInvitees = _myMeetingInvitees时,我得到了以下消息:
System.NullReferenceException:未设置为对象实例的对象引用
在后面代码的构造函数中,我有:
myMeeting = this.BindingContext as Meeting;这不会初始化myMeeting吗?主题和位置属性工作正常,只是不工作的集合。所以当我这么做的时候
myMeeting.MeetingInvitees = _myMeetingInvitees;这不是把这些设置在同一个地址吗?
我觉得在设置MeetingInvitees属性的会议类中有一些基本的东西我不理解
如果你能给我指明正确的方向,谢谢你!
Meeting.cs:
private ObservableCollection<String> meetingInvitees;
private string meetingTopic;
private string meetingPlace;
public ObservableCollection<string> MeetingInvitees
{
get { return meetingInvitees; }
set
{
meetingInvitees = value;
}
}
public string MeetingTopic
{
get { return meetingTopic; }
set
{
meetingTopic = value;
OnPropertyChanged("MeetingTopic");
}
}
public string MeetingPlace
{
get { return meetingPlace; }
set
{
meetingPlace = value;
OnPropertyChanged("MeetingPlace");
}
}Xamarin密码
public Meeting myMeeting;
public ObservableCollection<string> _myMeetingInvitees;
public NewMeetingContactsView ()
{
InitializeComponent ();
_myMeetingInvitees = new ObservableCollection<string>();
myMeeting = this.BindingContext as Meeting;
listAttendees.ItemsSource = _myMeetingAttendess;
}
async void btnNext_Clicked(object sender, EventArgs e)
{
myMeeting.MeetingInvitees = _myMeetingAttendess;
var nextpage = new NewMeetingOverviewView();
nextpage.BindingContext = myMeeting;
await Navigation.PushAsync(nextpage);
}
async void btnCancel_Clicked(object sender, EventArgs e)
{
await Navigation.PopToRootAsync();
}
void btnAdd_Clicked(object sender, EventArgs e)
{
_myMeetingAttendess.Add(entryName.Text);
}发布于 2018-02-24 18:34:54
在构造函数中,而不是执行
_myMeetingInvitees = new ObservableCollection<string>();
初始化myMeeting对象后,将其更改为以下代码。
public NewMeetingContactsView ()
{
InitializeComponent ();
myMeeting = new Meeting();
myMeeting.MeetingInvites = new ObservableCollection<string>();
this.BindingContext = myMeeting;
listAttendees.ItemsSource = myMeeting.MeetingInvites;
}您似乎没有为MeetingInvites初始化属性myMeeting,这就是抛出空引用错误的原因。
https://stackoverflow.com/questions/48966202
复制相似问题