2015-01-03 3 views
0

У меня проблема с заполнением DataGrid данными из DB (Sqlite) в моем проекте WPF C#.WPF DataGrid не заполнен данными

Я определил DataGrid в моем файле XAML с именем (dataGrid_Students):

<DataGrid Name="dataGrid_Students" Grid.Row="0" Grid.Column="0" 
      RenderOptions.ClearTypeHint="Enabled" 
      TextOptions.TextFormattingMode="Display" 
      CanUserAddRows="False" 
      CanUserDeleteRows="False" 
      SelectionUnit="FullRow" 
      AutoGenerateColumns="false" 
      > 
    <DataGrid.Columns> 
     <DataGridTextColumn Header="Index Number" /> 
     <DataGridTextColumn Header="First Name" /> 
     <DataGridTextColumn Header="Last Name" /> 
    </DataGrid.Columns> 
</DataGrid> 

В моем файле C# в конструкторе для этого окна, где определяется компонент DataGrid, я назвал метод initDataGrid();

public StudentForm() { 
    InitializeComponent(); 
    this.WindowStartupLocation = WindowStartupLocation.CenterScreen; 
    initDataGrid(); 
} 

Который содержит этот код:

private void initDataGrid() { 
    //dataGrid_Student.DataContext = dbManager.Students; does not work 
    dataGrid_Student.ItemsSource = dbManager.Students; 
} 

So к веро lem - мой DataGrid пуст. Я проверил, может ли список моих учеников быть нулевым, но это не так, и он содержит все данные. Итак, что еще мне не хватает, чтобы заполнить DataGrid данными?

UPDATE:

Мой студент класс:

[Table("student")] 
class Student { 

    [Key] // this is a primary key in my table 
    [Column(name:"brind")] 
    public int Brind { get; set; } 
    [Column(name:"first_name")] 
    public string FirstName { get; set; } 
    [Column(name:"last_name")] 
    public string LastName { get; set; } 
} 

переплетены мои свойства из класса Student в этой колонки:

<DataGrid Name="dataGrid_Student" Grid.Row="0" Grid.Column="0" 
      RenderOptions.ClearTypeHint="Enabled" 
      TextOptions.TextFormattingMode="Display" 
      CanUserAddRows="False" 
      CanUserDeleteRows="False" 
      SelectionUnit="FullRow" 
      AutoGenerateColumns="false" 
      > 
    <DataGrid.Columns> 
     <DataGridTextColumn Header="Index Number" Binding="{Binding Brind}" /> 
     <DataGridTextColumn Header="First Name" Binding="{Binding FirstName}" /> 
     <DataGridTextColumn Header="Last Name" Binding="{Binding LastName}" /> 
    </DataGrid.Columns> 
</DataGrid> 

DataGrid все еще пуст.

экземпляр

Мой DBManager этот класс:

class ManagerDBContext : DbContext { 

    public ManagerDBContext() : base("Student_DbContext") { 
     Database.SetInitializer<ManagerDBContext>(null); 
    } 
    public DbSet<User> Users { get; set; } 
    public DbSet<Student> Students { get; set; } 
} 

ответ

1

Вы пропускаете Binding часть для столбцов, так как вы установили AutoGenerateColumns ложным,

<DataGrid.Columns> 
     <DataGridTextColumn Header="Index Number" Binding="{Binding IndexNumber}" /> 
     <DataGridTextColumn Header="First Name" Binding="{Binding FirstName}" /> 
     <DataGridTextColumn Header="Last Name" Binding="{Binding LastName}" /> 
</DataGrid.Columns> 

Кроме того, необходимо преобразовать в Список, когда вы связываете

private void initDataGrid() { 
    //dataGrid_Student.DataContext = dbManager.Students; does not work 
    dataGrid_Student.ItemsSource = dbManager.Students.ToList(); 
} 
+0

Переплетная деталь для колонн? Я не знаком с привязками. Можете ли вы привести мне пример, как это сделать? – Kapparino

+0

@ Каппарино столбцы, которые вы хотите привязать к свойствам студентов, должны быть определены в xaml – Sajeetharan

+0

Эти переменные привязки - это переменные - свойства, определенные в моем классе Student, правильно? – Kapparino

Смежные вопросы