Я пытаюсь создать пользовательский рендерер StackLayout
, и согласно документации базовый рендерер является ViewRenderer
.
Итак, я закончил с этим для iOS:
public class MyCustomStackLayout : StackLayout { }
public class MyCustomStackLayoutRenderer : ViewRenderer<MyCustomStackLayout, UIView>
{
protected override void OnElementChanged(ElementChangedEventArgs<ExportableStackLayout> e)
{
base.OnElementChanged(e);
// some customizations here that don't mess with BackgroundColor at all
// removing all customizations doesn't fix the issue either.
}
}
И я использую это так в своем XAML:
<custom:MyCustomStackLayout BackgroundColor="Green">
</custom:MyCustomStackLayout>
Почти все Работая нормально, средство визуализации зарегистрировано правильно и ведет себя как StackLayout
, даже позволяя изменить Orientation
, но по какой-то причине значение BackgroundColor
, установленное в моем MyCustomStackLayout
, игнорируется, поэтому оно всегда прозрачно.
Я не смог найти точно, где в кодовой базе зарегистрирован рендерер для оригинального StackLayout
, так как он не зарегистрирован в AssemblyInfo с другими рендерами, поэтому я не уверен на 100%, что я здесь поступаю правильно.
Есть ли что-то, чего мне не хватает, что заставляет BackgroundColor
игнорироваться? Я использую правильный Renderer для StackLayout
? Кто-нибудь знает, где именно он регистрируется?
Обновление: я знаю, как реализовать BackgroundColor, мне действительно интересно понять, почему он не в первую очередь работает. Поскольку я использую тот же рендерер из оригинального StackLayout, который уже реализует этот .