DataGrid不显示嵌套类

时间:2012-08-09 19:39:20

标签: c# wpf wpfdatagrid

我希望WPF中的DataGrid将嵌套类显示到我的对象中。我正在使用NHibernate来检索数据。

我的模特课:

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>

在第二列中,不显示数据。 谁知道为什么? 谢谢,伙计们!!

2 个答案:

答案 0 :(得分: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>

答案 1 :(得分:0)

由于YearSemester是一个类,因此您可以使用BookYearSemester.IDBookYearSemester.Description之类的绑定的完整路径来显示其属性,也可以使用DataTemplate来定义自定义模板被替换为类对象