データベース モデルのデータを表示するためのデータグリッドが必要な Silverlight プロジェクトがあります。簡単にするために、次のモデルを悪用します。
データ グリッドには、送信されたが承認されていない記事が表示されます。各「記事の提出」には、ナビゲーション プロパティからアクセスできる「作成者」があります。
「Article Submission」テーブルと「Author」テーブルの両方のフィールドを持つデータ グリッドが必要です。
<sdk:DataGrid AutoGenerateColumns="False"
ItemsSource="{Binding ElementName=articleApplicationDataSource,Path=Data}"
Name="articleSubmissionDataGrid"
RowDetailsVisibilityMode="VisibleWhenSelected">
<sdk:DataGrid.Columns>
...some column template definitions
<!--THIS LOADS FINE!-->
<sdk:DataGridTextColumn x:Name="articleTitleColumn"
Binding="{Binding Path=Title}" Header="Title" />
<!--THIS DOESN'T-->
<sdk:DataGridTextColumn x:Name="authorNameColumn"
Binding="{Binding Path=Author.Name}" Header="Name" />
</sdk:DataGrid.Columns>
</sdk:DataGrid>
したがって、私の「作成者」エンティティが「articleSubmissionDataSource」にロードされていると仮定します(そう思われます)。my binding path=Author.Name は、ナビゲーション プロパティを介して 'Author' エンティティにアクセスする正しい方法ですか?
ところで:「articleApplicationDataSource」は、このように「riaControl」によって xaml に設定されています。
<riaControls:DomainDataSource AutoLoad="True"
d:DesignData="{d:DesignInstance my1:ArticleSubmission, CreateList=true}" Height="0"
LoadedData="roleApplicationDomainDataSource_LoadedData"
name="articleSubmissionDomainDataSource"
QueryName="GetArticleSubmissionsQuery" Width="0" LoadSize="500">
<riaControls:DomainDataSource.DomainContext>
<my:OrganizationContext />
</riaControls:DomainDataSource.DomainContext>
</riaControls:DomainDataSource>
また、ドメイン サービスの GetArticleSubmissions メソッドが「Author」ナビゲーション プロパティの有効な情報を返すことに気付きました。しかし、'LoadedDataEventArgs e' を調べると、'Author' ナビゲーション プロパティが null に設定されているようです。
これが私のドメインサービスのコードです
public IQueryable<RoleApplication> GetRoleApplications()
{
return this.ObjectContext.ArticleSubmissions.Include("Person");
}
ArticleSubmission のメタデータ
internal sealed class ArticleSubmissionMetadata
{
// Metadata classes are not meant to be instantiated.
private ArticleSubmissionMetadata()
{
}
[Include]
public Author Author { get; set; }
public DateTime Date { get; set; }
public int ID { get; set; }
public int AuthorID { get; set; }
public string Title { get; set; }
}
}
お願い、お願い、助けて。私が投稿した大量のコードを理解できない場合は、エンティティとナビゲーション プロパティ エンティティを 1 か所にバインドする方法を説明している参考文献を参照してください。
また、コードが間違っている慣行に気付いた場合は、私に知らせてください。私はこれを書いていませんが、それを機能させるタスクを与えられています。私はシルバーライトが初めてです。