2011-11-26 19 views
0

我必須綁定silverlight中的datagrid。如何將WCF結果'e.Result'轉換爲IEnumerable

void proxy_DoWorkCompleted(object sender, ServiceReference1.DoWorkCompletedEventArgs e) 
    { 


     try 
     { 
      //var v = e.Result as Queryable; 
      //PagedCollectionView pagesEmployees = new PagedCollectionView(v); 
      //dpGridPager.Source = pagesEmployees; 
      dataGrid1.ItemsSource = e.Result; 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.InnerException.ToString()); 
     } 
    } 

現在這個e.Result應該是IEnumerable綁定數據網格。我應該如何將其轉換爲IEnumerable?

+0

請出示了服務合同。如果沒有那個,我們怎麼知道e.Result應該是什麼? ' –

+0

@John Saunders:謝謝你的回覆。我從我的服務返回數據表並希望將其轉換爲Ienumerable。 –

回答

5

e.Result包含DoWork操作的結果;如果服務操作的返回類型是可枚舉的,那麼e.Result也是。因此,更新服務操作以返回可枚舉的內容,然後更新服務引用。

+0

感謝您的回覆。假設我從服務返回數據表? –

+0

我同意你的意見。但如果我的服務返回數據表呢? –

+0

'DataTable'類型在Silverlight中不存在,因此您可能會得到類似於ArrayOfXElement的e.Result類型,其中包含響應的XML。如果它適用於你(即在SL中,你將自己解析XML,然後將其轉換爲可枚舉),那麼應該使用一些數據類型作爲操作的返回值。 – carlosfigueira

0

有時將單個對象用作需要IEnumerable作爲數據源的控件的數據源很有用。我用一個小的擴展方法來處理這樣的情況:

public static class ObjectExtensions 
{ 
    public static IEnumerable<T> WrapInEnumerable<T>(this T t) 
    { 
     yield return t; 
    } 
} 

現在,如果你有一個對象從DoWork方法返回,您可以通過使用數據綁定:

myControl.DataSource = DoWork().WrapInEnumerable(); 
相關問題