gpt4 book ai didi

c# - 错误 : System. NullReferenceException:对象引用未设置到对象的实例

转载 作者:太空宇宙 更新时间:2023-11-03 13:30:56 24 4
gpt4 key购买 nike

<分区>

使用 Windows 手机应用程序 C#:

添加我的信息时出现此错误 “System.NullReferenceException:对象引用未设置到对象的实例。” tại "Data.Add(newInfo) "我使用 MVVM 模式。

MainViewModel.cs中,我的Add Function

public class MainViewModel : INotifyPropertyChanged
{
private MemberDataContext MemberDB;

public MainViewModel(string MemberDBConnectionString)
{
MemberDB = new MemberDataContext(MemberDBConnectionString);
}


private ObservableCollection<Member> _data;
public ObservableCollection<Member> Data
{
get { return _data; }
set
{
_data = value;
NotifyPropertyChanged("Data");
}
}

public void LoadCollectionsFromDatabase()
{
var infoInDB = from Member ss in MemberDB.Members
select ss;
Data = new ObservableCollection<Member>(infoInDB);
}


public void Addinfo(Member newInfo)
{
MemberDB.Members.InsertOnSubmit(newInfo);

MemberDB.SubmitChanges();
Data.Add(newInfo); **<~~~~~~~ Error in this line**

}

public void Update(Member currentmember, string fullname, string address)
{
currentmember.Address = address;
currentmember.FullName = fullname;
}

public void Delete(Member currentmember)
{
MemberDB.Members.DeleteOnSubmit(currentmember);
Data.Remove(currentmember);
}

public void SaveData()
{
MemberDB.SubmitChanges();
}

public void LoadData()
{
if (Data == null)
{
Data = new ObservableCollection<Member>(MemberDB.Members);
var oderedFullName = from Member b in MemberDB.Members
orderby b.FullName
select b;
}
}

public MainViewModel()
{
MemberDB = new MemberDataContext("Data source=isostore:/Member.sdf");
if (!MemberDB.DatabaseExists())
{
MemberDB.CreateDatabase();
}
}



#region INotifyPropertyChanged Members

public event PropertyChangedEventHandler PropertyChanged;

// Used to notify the app that a property has changed.
private void NotifyPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
#endregion

}
public class ViewDetails : INotifyPropertyChanged
{
private string _fullname;

public string FullName
{
get
{
return _fullname;
}
set
{
_fullname = value;

if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs("Fullname"));
}
}
}

private string _address;

public string Address
{
get
{
return _address;
}
set
{
_address = value;

if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs("Address"));
}
}
}
public void LoadDetails(Member abc)
{
FullName = abc.FullName;
Address = abc.Address;
}
public void UpdateDetails(Member abc)
{
abc.FullName = FullName;
abc.Address = Address;
}
#region INotifyPropertyChanged Members

public event PropertyChangedEventHandler PropertyChanged;

// Used to notify the app that a property has changed.
private void NotifyPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
#endregion

我的Add.xaml:

<StackPanel x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">

<TextBlock Text="FullName"/>
<TextBox x:Name="addfullname"/>
<TextBlock Text="Address"/>
<TextBox x:Name="addaddress" />


</StackPanel>

我的添加按钮:

 private void Add_Click(object sender, EventArgs e)
{
if ((addaddress.Text.Length > 0) && (addfullname.Text.Length > 0))
{
Member newInfo = new Member
{
FullName = addfullname.Text,
Address = addaddress.Text
};
App.MainViewModel.Add(newInfo);

if (NavigationService.CanGoBack)
{
NavigationService.GoBack();
}
}
//else MessageBox.Show("Data cannot be null!");

}

在我的App.xaml

  public partial class App : Application
{
private static object _lockObject = new object();
private static MainViewModel mainviewmodel;
public static MainViewModel MainViewModel
{
get
{


if (mainviewmodel == null)
{
lock (_lockObject)
{
mainviewmodel = new MainViewModel();
}
}
return mainviewmodel;
}


}

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com