2012-08-09 79 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

第二列上的綁定路徑應該是屬性名稱:BookYearSemester,而不是類名稱YearSemester。嘗試:

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

感謝定義自定義模板,果凍,但它也行不通。 DataGrid上不顯示BookYearSemester屬性的ToString()值。任何想法? – Kiwanax 2012-08-10 11:56:40

0

因爲YearSemester是一個類,則可以顯示其屬性或者使用完整路徑,像BookYearSemester.IDBookYearSemester.Description結合,或者通過使用DataTemplate將被替換爲類對象