我无法将元素添加到列表属性。 VS说,没有​​设置对对象实例的引用

时间:2019-05-18 10:33:05

标签: c# xamarin.forms

我正在尝试使用按钮将条目中的元素添加到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:对象引用未设置为对象的实例。

2 个答案:

答案 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; }
}