我正在尝试使用按钮将条目中的元素添加到viewmodel中的列表属性中。 viewmodel文件已正确导入(它向我低声显示属性)。我知道,这是一个简单的错误,但我没有弄清楚。
//View part
//using the file with vm classes
using Pichacka.ViewModel;
//making an instance
viewmodel vm = new viewmodel();
private void BtnAddCertainFirm_Clicked(object sender, EventArgs e)
{
if (String.IsNullOrWhiteSpace(entFirmName.Text) || String.IsNullOrWhiteSpace(entFirmMoney.
{
App.Current.MainPage.DisplayAlert("ERROR", "Nezadal jste všechny hodnoty!", "OK");
}
else
{
string jmenoFirmy = entFirmName.Text; //getting the string value from entry
//string penizeFirmy = entFirmMoney.Text; this line is not importatnt for this problem
vm.listFirem.Add(jmenoFirmy); //here im trying to add an element
}
}
//ViewModel part
//list property itself..
private List<string> _listFirem;
public List<string> listFirem
{
get { return _listFirem; }
set { _listFirem = value; }
}
预期结果:单击按钮会将新元素添加到列表属性
实际结果:System.NullReferenceException:对象引用未设置为对象的实例。
答案 0 :(得分:0)
您仅创建了viewmodel实例,而没有创建listFirem
属性。创建null
的实例时,其默认值为viewmodel
。因此,当您尝试将元素添加到此列表时,将获得null引用异常。
要解决此问题,请使用实例listFirem
初始化List<string>
属性。像这样:
viewmodel vm = new viewmodel();
vm.listFirem = new List<string>();
答案 1 :(得分:0)
是的,作为akg179的答复,您需要确保该集合不为null并在向其添加对象之前被正确实例化。
public partial class Page5 : ContentPage
{
public Page5 ()
{
InitializeComponent ();
}
viewmodel vm = new viewmodel();
private void Btn1_Clicked(object sender, EventArgs e)
{
vm.listfirm = new List<string>();
vm.listfirm.Add("test");
}
}
public class viewmodel
{
public List<string> listfirm { get; set; }
}