将观察者集合分配给列表框时出错

时间:2014-01-05 16:07:47

标签: c# wpf mvvm listbox observablecollection

我有列表框,我想添加项目,当我尝试使用以下代码时出现错误

对象引用未设置为对象的实例。“

错误是当我执行item source = _userList,

我在这里做错了什么?

public ObservableCollection<User> _UsersList = new ObservableCollection<User>();

public MainWindow()
{
    _UsersList.Add(new User {Name = "Mike"});
    _UsersList.Add(new User { Name = "Nick" });
    listbox1.ItemsSource = _UsersList;
    DataContext = this;
    InitializeComponent();
}

2 个答案:

答案 0 :(得分:3)

尝试使用.InitializeComponent方法必须在使用xaml

中定义的任何元素之前调用
 public MainWindow()
{
     InitializeComponent();

    _UsersList.Add(new User {Name = "Mike"});
    _UsersList.Add(new User { Name = "Nick" });
    listbox1.ItemsSource = _UsersList;
    DataContext = this;

答案 1 :(得分:3)

只有在调用InitializeComponent后才能访问UI元素。

  

InitializeComponent() 实际上是对控件的部分类的方法调用,该部分类负责呈现UI元素   为了你的控制。因此,如果您在此之前访问它,它将永远是   null,因为那些尚未初始化。

public MainWindow()
{
    _UsersList.Add(new User {Name = "Mike"});
    _UsersList.Add(new User { Name = "Nick" });
    DataContext = this;
    InitializeComponent();

    listbox1.ItemsSource = _UsersList;
}