2012-08-09 5 views
1

내 DataGrid에서 WPF로 중첩 클래스를 내 객체에 표시하려고합니다. 나는 데이터를 검색하기 위해 NHibernate를 사용하고있다.DataGrid에 중첩 클래스가 표시되지 않습니다.

내 모델 클래스 :

public class PublishedBook 
{ 
    public virtual long ID { get; set; } 
    public virtual string Title { get; set; } 
    public virtual YearSemester BookYearSemester { get; set; } 

    public override string ToString() 
    { 
     return string.Format("{0} ({1})", Title, BookYearSemester); 
    } 
} 
public class YearSemester 
{ 
    public virtual long ID { get; set; } 
    public virtual string Description { get; set; } 

    public override string ToString() 
    { 
     return Description; 
    } 
} 

이 내 저장소 클래스 :

public class PublishedBookRepository : BaseRepository 
{ 
    public PublishedBookRepository(ISession objCurrentSession) : 
     base(objCurrentSession) { } 

    public IEnumerable<PublishedBook> GetAllPublishedBooks() 
    { 
     return base.CurrentSession 
      .CreateCriteria<PublishedBook>() 
      .List<PublishedBook>(); 
    } 
} 

내 XAML 코드 : 두 번째 열에서

<DataGrid x:Name="dagtagridPublishedBooks" AutoGenerateColumns="False"> 
    <DataGrid.Columns> 
     <DataGridTextColumn Header="Title" Binding="{Binding Title}" /> 
     <DataGridTextColumn Header="YearSemester" Binding="{Binding YearSemester}" /> 
    </DataGrid.Columns> 
</DataGrid> 

는, 데이터가 표시되지 않습니다. 그 이유를 아는 사람이 있습니까? 감사합니다. 얘들 아 !!

답변

1

두 번째 열의 바인딩 경로는 YearSemester 클래스 이름이 아닌 BookYearSemester 속성 이름이어야합니다. 시도 : 클래스가

<DataGrid x:Name="dagtagridPublishedBooks" AutoGenerateColumns="False"> 
    <DataGrid.Columns> 
     <DataGridTextColumn Header="Title" Binding="{Binding Title}" /> 
     <DataGridTextColumn Header="YearSemester" Binding="{Binding BookYearSemester}" /> 
    </DataGrid.Columns> 
</DataGrid> 
+0

감사 개체됩니다 DataTemplate를 사용하여 사용자 지정 템플릿을 정의 할 수 있습니다, 젤리,하지만 그것도 작동하지 않습니다. BookYearSemester 속성의 ToString() 값은 DataGrid에 표시되지 않습니다. 어떤 생각? – Kiwanax

0

YearSemester 때문에, 당신은 BookYearSemester.ID 또는 BookYearSemester.Description 같은 바인딩에 대한 전체 경로를 사용하여 하나의 속성을 표시하거나 클래스에 대한 대체

관련 문제