मैं सिर्फ ब्लॉग पोस्ट (Part 1, Part 2) है कि इस समस्या का समाधान मेरी देने के एक जोड़े प्रकाशित किया है। मैंने a sample को गिटहब में भी पोस्ट किया है जो वर्चुअल कोलेक्शन अवधारणा पर अपना स्वयं का लेना लागू करता है (मुझे नहीं पता कि यह इन्फ्राजिस्टिक्स के नियंत्रण से कैसे तुलना करता है, क्योंकि मैंने इसका उपयोग नहीं किया है)।
यह दिखाने के लिए कि इसका उपयोग करना कितना आसान है, नमूना से कुछ स्निपेट यहां दिए गए हैं।
public class MainViewModel : ViewModel
{
private NetflixTitlesSource _source;
public VirtualCollection<Title> Items { get; private set; }
public MainViewModel()
{
_source = new NetflixTitlesSource();
Items = new VirtualCollection<Title>(_source, pageSize: 20, cachedPages: 5);
}
protected override void OnViewLoaded()
{
Items.Refresh();
}
}
XAML में आप बस Items
संपत्ति एक ListBox
या DataGrid
की ItemsSource
संपत्ति के लिए प्रत्येक डेटा स्रोत आप चाहिए के लिए बाध्य: सबसे पहले, आप निम्न तरीके से VirtualCollection, वर्ग कि डेटा प्राप्त करने में निर्देशांक का उपयोग करें वर्चुअल कोलेक्शन स्रोत लागू करें।
public class NetflixTitlesSource : VirtualCollectionSource<Title>
{
protected override Task<int> GetCount()
{
return GetQueryResults(0, 1, null)
.ContinueWith(t => (int)t.Result.TotalCount, TaskContinuationOptions.ExecuteSynchronously);
}
protected override Task<IList<Title>> GetPageAsyncOverride(int start, int pageSize, IList<SortDescription> sortDescriptions)
{
return GetQueryResults(start, pageSize, sortDescriptions)
.ContinueWith(t => (IList<Title>)((IEnumerable<Title>)t.Result).ToList(), TaskContinuationOptions.ExecuteSynchronously);
}
private Task<QueryOperationResponse<Title>> GetQueryResults(int start, int pageSize, IList<SortDescription> sortDescriptions)
{
// code to query the Netflix OData API
}
}
स्रोत
2012-08-13 09:31:00
अपडेट:: यहाँ क्या NetflixTitlesSource के दो प्रमुख तरीकों की तरह लग रही है के बाद से विषय वापस मैं वर्तमान में 3 पक्ष नियंत्रण की जांच कर रहा हूँ आता है। इंफ्राजिस्टिक्स "वर्चुअलकोलेक्शन" यह सबसे अच्छा तरीका संभालने लगता है और डोमेन सर्विसेज से जुड़ा हो सकता है - अच्छी चीजें –