2015-01-03 3 views
0

WPF C# 프로젝트에서 DB (Sqlite)의 데이터로 DataGrid를 채우는 데 문제가 있습니다. 나는 이름으로 내 XAML 파일에 데이터 그리드를 정의한WPF DataGrid에 데이터가 채워지지 않습니다.

(dataGrid_Students) : DataGrid 구성 요소가 정의되는 경우, 나는이 방법을 호출이 윈도우의 생성자 내 C# 파일에서

<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> 

initDataGrid();

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

그래서 확률값 :이 코드를 포함

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

흠 .. 내 DataGrid가 비어 있습니다. 내 학생 목록이 null 일 가능성이 있는지 확인했지만 그렇지 않은 경우 모든 데이터가 포함되어 있습니다. 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; } 
} 

이 컬럼에 학생 클래스 내 속성을 바인더 제본 :

<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> 

데이터 그리드는 여전히 비어 있습니다. 당신이 거짓으로 AutoGenerateColumns를 설정하기 때문에 당신은, 열에 대한 바인딩 부분을 누락

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

,

<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> 

은 또한 당신이 변환해야합니다

내 dbManager 인스턴스는이 클래스 바인딩시 목록

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

열에 대한 바인딩 파트? 나는 바인딩에 익숙하지 않다. 어떻게 할 수 있는지 예를 들어 주시겠습니까? – Kapparino

+0

@ Kapparino 학생의 속성에 바인딩하려는 열은 xaml에 정의되어야합니다. – Sajeetharan

+0

이 바인딩 변수는이 변수입니다 - Student 클래스에 정의 된 속성입니까? – Kapparino

관련 문제