2012-08-09 77 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将被替换为类对象