Demonstrates changing a Xamarin Forms CollectionView from a vertical list to a horizontal list based on device orientation. This code accompanies my blog post Rotating a list in Xamarin.Forms using CollectionView.
Xamarin.Essentials DeviceDisplay is unreliable, returning the previous orientation when using the MainDisplayInfoChanged event. See xamarin/Essentials#1355.
Using the page's OnSizeAllocated event is more reliable, override the OnSizeAllocated event to call a view-model method which updates the layout. This is usually done using a base page but since this app has only one page the event is overridden in the code behind.
Uses a binding on CollectionView.ItemTemplate to specify different data templates for portrait and landscape orientation.
Uses a binding on CollectionView.ItemLayout to specify different layouts / orientation for portrait and landscape. On tablets multiple column layouts could be used instead.
| Portrait | Landscape |
|---|---|
![]() |
![]() |
Icons made by Freepik from www.flaticon.com.
Text from Zombie Ipsum.
Colours by Nord.


