2011-10-18 58 views
0

我真的很想知道爲什麼在第一種情況下我可以將數據綁定到DataGrid,而在第二種情況下它根本不起作用。謝謝你的任何線索!如何將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)。消息。但是,當頁面出現在DataGrid下時,我可以看到數據,但同時發現上面的錯誤...

我不確定...但是有可能在頁面出現之前查看數據嗎?這真是不舒服都沒有看到任何數據...

更新:

[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 (alert).Completed + =(alert,args)=> { label1.Content = l.Entities.ElementAt(0).Message; }; –

相關問題