I need to create custom control for CustomCollectionViewRenderer in Xamarin Forms as I need to show collection of images like Pinterest app in Xamarin forms. But OnElementChanged is not there to override CollectionViewRenderer. Am I doing something wrong here?
I'm using
[assembly: ExportRenderer(typeof(CollectionView), typeof(CustomCollectionViewRenderer))]
namespace MyProj.Droid
{
public class CustomCollectionViewRenderer : CollectionViewRenderer
{
public CustomCollectionViewRenderer(Context context) : base(context)
{
}
protected override void OnElementChanged(ElementChangedEventArgs<ItemsView> elementChangedEvent)
{
base.OnElementChanged(elementChangedEvent);
if (elementChangedEvent.NewElement != null)
{
StaggeredGridLayoutManager manager = new StaggeredGridLayoutManager(3, StaggeredGridLayoutManager.Vertical);
SetLayoutManager(manager);
}
}
}
}
I just Did the same in my VS19 for MAC with the following configuration and everything worked
using Android.Content;
using Android.Support.V7.Widget;
using Test.Droid.PlatformRenderer;
using System.ComponentModel;
using Xamarin.Forms;
using Xamarin.Forms.Platform.Android;
[assembly: ExportRenderer(typeof(CollectionView), typeof(CustomCollectionViewRenderer))]
namespace Test.Droid.PlatformRenderer
{
public class CustomCollectionViewRenderer : CollectionViewRenderer
{
public CustomCollectionViewRenderer(Context context) : base(context)
{
}
protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs changedProperty)
{
base.OnElementPropertyChanged(sender, changedProperty);
}
protected override void OnElementChanged(ElementChangedEventArgs<ItemsView> elementChangedEvent)
{
base.OnElementChanged(elementChangedEvent);
if (elementChangedEvent.NewElement != null)
{
StaggeredGridLayoutManager manager = new StaggeredGridLayoutManager(3, StaggeredGridLayoutManager.Vertical);
SetLayoutManager(manager);
}
}
}
}
VS config:
Xamarin.Forms NuGet Package version 4.5.0.356
Visual Studio Professional 2019 for Mac Version 8.3.4 (build 8)
NuGet Version: 5.3.0.6192
Xamarin.iOS Version: 13.4.0.2
Xamarin.Android Version: 10.0.3.0
So my guess is you need the latest XF!