MVVM datagrid binding

binding, c#, datagrid, mvvm, wpf

Solution

You have an error in binding. Try this:

<DataGrid AutoGenerateColumns="False" ItemsSource="{Binding Lecturers}" >

Code-behind:

private ObservableCollection<Lecturer> _lecturers = new ObservableCollection<Lecturer>();
public ObservableCollection<Lecturer> Lecturers
{
   get { return _lecturers; }
   set { _lecturers = value; }
}

Here is simple example code (LecturerSimpleBinding.zip).

Problem

I'm using MVVM for my project and I'm trying to bind a table from my database with a DataGrid. But when I run my application datagrid is empty. MainWindow.xaml.cs: ``` public MainWindow(){ InitializeComponent(); DataContext = new LecturerListViewModel() } ``` MainWindow.xaml: ``` <DataGrid AutoGenerateColumns="False" ItemsSource="{Binding Source=Lecturers}" > <DataGrid.Columns> <DataGridTextColumn Header="Name" Binding="{Binding Name}"/> <DataGridTextColumn Header="Surname" Binding="{Binding Surname}"/> <DataGridTextColumn Header="Phone" Binding="{Binding Phone_Number}" /> </DataGrid.Columns> </DataGrid> ``` LecturerListViewModel.cs: ``` public class LecturerListViewModel : ViewModelBase<LecturerListViewModel> { public ObservableCollection<Lecturer> Lecturers; private readonly DataAccess _dataAccess = new DataAccess(); public LecturerListViewModel() { Lecturers = GetAllLecturers(); } ``` and ViewModelBase implements INotifyPropertyChanged. Lecturer.cs ``` public class Lecturer { public Lecturer(){} public int Id_Lecturer { get; set; } public string Name { get; set; } public string Surname { get; set; } public string Phone_Number { get; set; } ``` What did I do wrong? I checked it with debuger and DataContext contains all lecturers, but ther aren't shown in datagrid.

Original source

Related problems