Пользовательский рендерер Xamarin с другим родительским элементом управления

#android #ios #xamarin #custom-renderer

#Android #iOS #xamarin #пользовательский рендерер

Вопрос:

Так что я хочу сделать готовый рендеринг CarouselView при Android и CarouselViewFormsPlugin при iOS. Я знаю, что могу выполнить это в xaml с помощью onplatform, но не хочу делать это в нескольких местах. Можно ли это сделать с помощью пользовательского средства визуализации, подобного следующему?

Основной проект:

 public class CustomCarousel{}
  

Android:

 public class CustomCarousel:CarouselView{}
  

iOS

 public class CustomCarousel:CarouselView.Plugin{}
  

Если это невозможно, у меня есть два варианта, которые я вижу:

  1. В xaml используйте onplatform, чтобы определить, какой элемент управления использовать.
  2. Создайте другое представление для iOS и Android и определите во время выполнения, какое представление отображать.

Я знаю, что могу реализовать эти два варианта, но я думаю, что, если возможно, CustomRenderer — лучшее решение здесь?

Комментарии:

1. Если вы используете пользовательский рендерер для его достижения, вы должны наследовать CarouselPageRenderer , поэтому его нельзя использовать как public class CustomCarousel:CarouselView.Plugin{} формат.

2. Да, это вывод, к которому я пришел, который не работает, поэтому в итоге просто выполнил onplatform в xaml для отображения соответствующего элемента управления

3. ОК. Просто добейтесь этого в xaml.