dotnet / runtime

.NET is a cross-platform runtime for cloud, mobile, desktop, and IoT apps.
https://docs.microsoft.com/dotnet/core/
MIT License
15.35k stars 4.74k forks source link

Virtualizing Observable Collection #17969

Closed MarcoLoetscher closed 4 years ago

MarcoLoetscher commented 8 years ago

In .NET Standard 2.0, I would like to see an Virtualizing Observable Collection. Since Windows 8 (WinRT) a new design principle of Microsoft is “fast and fluid”. But in the full .NET Framework no class is available to virtualize the loading of data. There should be for all UI technologies from Microsoft (WPF, UWA, Xamarin.Forms, ASP.NET) a simple built-in way to load data by page (paging). There are some community projects that have addressed this issue, but I think that Microsoft should provide a uniform solution.

karelz commented 8 years ago

What exactly is your proposal then?

BTW: .NET Standard 2.0 is focused on compat with Desktop 4.6.1 and Xamarin. New APIs which are not in those won't be part of netstandard2.0. However, new APIs can be introduced in .NET Core 1.2 (they just won't be available on all standard .NET implementations).

MarcoLoetscher commented 8 years ago

The newest and most professional solution is the one from Andrew Whiddett. The following sentence can be found on his project page:

His solution works for WPF and Xamarin. In my opinion, a solution from Microsoft should also work for UAP. I think .NET Standard is the right place for all UI frameworks to benefit. Virtualizing or paging is important for all UI Frameworks. .NET is sixteen years old, and Microsoft should make life easier for developers and provide a uniform solution. The new Microsoft listens to its customers, I hope so.

karelz commented 8 years ago

I guess we're missing concrete proposal of which API to change and how, or which APIs to add. With all implications thought through -- does it require changes in existing UI frameworks? Does it introduce compat problems? Etc. (looks like non-trivial work)

MarcoLoetscher commented 8 years ago

Please read the article by Andrew Whiddett then clarify some of your questions. We need an ObservableCollection or a derivation with virtualization functions. Two solutions from third parties:

It's not trivial, but you'll make it. Thank you for your efforts.

karelz commented 8 years ago

@MarcoLoetscher while I would love to educate myself in a new space, it is unlikely I will get to it anytime soon. Until then, anyone from the community should feel encouraged to create formal API proposal (that's why it is marked as "up for grabs" + "api-needs-work"), that would help speed things up.

eiriktsarpalis commented 4 years ago

Triage: From a System.Collections perspective this issue doesn't appear to be very actionable. I'm going to close this, but feel free to reopen. Most likely this will require creating separate issues containing concrete proposals on required api changes.