假設你有一個名爲MyCombo
的ComboBox,命名MyEntity
與DomaineService相關聯的實體命名MyDomainService
。
不要忘記
using System.ServiceModel.DomainServices.Client;
和使用與您的實體的Web站點和的DomainService
運作良好,當然你叫一個名爲PROC:在
void LoadEntities()
{
MyDomainService_Context = new MyDomainService();
EntityQuery<MyEntity > mQuery = null;
mQuery = from q in _Context.GetMyDomainServiceQuery()
select q;
LoadOperation<MyEntity > loadOpLoadEntities = _Context.Load(mQuery, LoadOpLoadEntitiesCallBack, null);
}
然後CallBack
功能:
void LoadOpLoadEntitiesCallBack(LoadOperation<MyEntity> loadOperation)
{
if (loadOperation.Entities.Count() > 0)
{
List<MyEntity> mList = new List<MyEntity>();
MyEntity mE = new MyEntity();
mE.Column1 = -1;
mE.Column2 = "Default value";
mList.Add(mE);
for (int i = 0; i < loadOperation.Entities.Count(); i++)
{
mList.Add(loadOperation.Entities.ToList()[i]);
}
this.MyCombo.ItemsSource = mList.ToList();
}
}
+1作爲一名經驗豐富的WPF程序員,我甚至都不知道「CompositeCollection」!搜索互聯網時有各種解決方法,但沒有提到這一點!難以置信... – 2010-01-28 07:11:37
是的,當我讀到這個我很驚訝。我今天早上一直在做一些研究,我認爲它會做到這一點。現在過濾是在Linq查詢的構建中完成的,所以我想我可以測試'All',如果沒有選擇迭代peopleCollection。在將來,我計劃重構並使用CollectionViewSource過濾視圖而不需要重新查詢;我不確定那將如何工作,但對於這個問題,我有我的答案。謝謝! – 2010-01-28 16:01:13
@Aviad是的,這是一個不錯的解決方案,有一點吸吮是因爲CompositeCollection不是Freezable,因此無法通過DataContext綁定到Collection屬性。這可以通過綁定到靜態資源來解決...... – 2010-01-28 19:59:19