1

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 番目の列では、データは表示されません。誰でも理由を知っていますか?みんなありがとう!!

4

2 に答える 2

1

2 列目のバインディングのパスはBookYearSemester、 class name ではなく、 property name: にする必要がありますYearSemester。試す:

<DataGrid x:Name="dagtagridPublishedBooks" AutoGenerateColumns="False">
    <DataGrid.Columns>
        <DataGridTextColumn Header="Title" Binding="{Binding Title}" />
        <DataGridTextColumn Header="YearSemester" Binding="{Binding BookYearSemester}" />
    </DataGrid.Columns>
</DataGrid>
于 2012-08-09T19:55:24.810 に答える
0

はクラスであるため、またはYearSemesterのようなバインディングのフル パスを使用してそのプロパティを表示するか、クラス オブジェクトに置き換えられるものを使用してカスタム テンプレートを定義できます。BookYearSemester.IDBookYearSemester.DescriptionDataTemplate

于 2013-01-22T09:59:39.340 に答える