2011-10-18 8 views
0

私は本当に最初のケースではDataGridにデータをバインドすることができ、2番目のケースでは全く動作しない理由を知りたいと思っています。何か手がかりありがとう!ここでWCF RIA ServicesクエリエンティティをWPFラベルにバインドする方法はありますか?

はコードです:

 Guid id = Guid.Parse("BCBBF129-30ED-400B-9D63-403ED79FDFC7"); 
     EntityQuery<Alert> alert = this._preDomainContext.GetAlertQuery(id); 
     LoadOperation<Alert> l = this._preDomainContext.Load(alert); 
     dataGrid1.ItemsSource = l.Entities; // <- It works fine 

     label1.Content = l.Entities.ElementAt(0).Message; // It gives an error 

とXAML:

<sdk:DataGrid AutoGenerateColumns="True" Height="100" 
HorizontalAlignment="Left" Margin="173,154,0,0" Name="dataGrid1" VerticalAlignment="Top" Width="120" /> 
<sdk:Label Height="28" HorizontalAlignment="Left" Margin="194,114,0,0" Name="label1" VerticalAlignment="Top" Width="120" /> 

とエラーは次のようになります。

インデックスが範囲外でした。負でなく、コレクションのサイズより小さくなければなりません。 パラメータ名:インデックス

ああ!どちらの場合でも、私がデバッグすると、l.Entitiesの値と、 l.Entities.ElementAt(0).Messageの値を見ることができません。しかし、DataGridの下にページが表示されると、データが表示されますが、同時にエラーが発生します。

私は確信しています...しかし、ページが表示される前にデータを見ることはできますか?それは...

UPDATESすべてのデータが表示されない、本当に不快です:

[RequiresAuthentication] 
    [EnableClientAccess()] 
    public class PreDomainService : LinqToEntitiesDomainService<PreEntities> 
    { 


    public Alert GetAlert(Guid id) 
     { 
      return this.ObjectContext.Alerts.Where(a=>a.ID == id).FirstOrDefault(); 
     } 
+0

エラーは......ですか? – GazTheDestroyer

+0

私はちょうどエラーを置く!見直してくれてありがとう!!!! –

答えて

1

私はあなたのエンティティのコレクションが空であることを前提としています。

+0

はい。それは空です...しかし、後でデータが現れる可能性はどうですか?怠惰な拘束力の問題やそれが原因だと思いますか? –

+1

LoadOperationはINotifyPropertyChangedを実装しているため、DataGridバインディングはデータが表示されたときに自身を更新することができます。 LoadOperationの全ポイントは、それが非同期であるということです。データがいつロードされるかを知りたい場合は、Completedイベントにサブスクライブします。 – GazTheDestroyer

+0

私はthis._preShowDomainContext.Loadのようなものを使うべきですか?(警告).Completed + =(警告、args)=> { label1.Content = l.Entities.ElementAt(0).Message; }; –

関連する問題