Не существует метода OnElementChanged для переопределения CollectionViewRenderer в Xamarin - PullRequest
1 голос
/ 19 марта 2020

Мне нужно создать пользовательский элемент управления для CustomCollectionViewRenderer в формах Xamarin, так как мне нужно показать коллекцию изображений, таких как приложение Pinterest, в формах Xamarin. Но OnElementChanged не может переопределить CollectionViewRenderer . Я что-то здесь не так делаю?

Я использую

  • Пакет Xamarin.Forms NuGet версии как 4.0.2.70
  • Visual Studio Community 2019 для Ma c Версия 8.3.4 (сборка 8)
  • NuGet Версия: 5.3.0.6192
  • Xamarin. iOS Версия: 13.4.0.2 (Visual Сообщество Studio)
  • Xamarin. Android Версия: 10.0.3.0 (Сообщество Visual Studio)
    [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);
                   }
               }
            }
        }

1 Ответ

0 голосов
/ 19 марта 2020

Я только что сделал то же самое в моем VS19 для MA C со следующей конфигурацией, и все работало

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 версии 4.5.0.356

Visual Studio Professional 2019 для Ma c Версия 8.3.4 (сборка 8)

Версия NuGet: 5.3.0.6192

Xamarin. iOS Версия: 13.4.0.2

Xamarin. Android Версия: 10.0.3.0

Так что я думаю, вам нужен последний XF!

...