Я пытаюсь создать пользовательский макет в Xamarin, который содержит различные элементы для каждой платформы (в основном UWP -> текстовое поле, Android -> кнопки).
Я следовал учебникам по Xamarin для создания пользовательского средства визуализации:
[assembly: ExportRenderer(typeof(CheckWordRecognizedLayout), typeof(UwpCheckWordRecognizedLayoutRenderer))]
namespace dictionary.UWP.Renderers
{
public class UwpCheckWordRecognizedLayoutRenderer : VisualElementRenderer<StackLayout, StackPanel>
{
protected override void OnElementChanged(ElementChangedEventArgs<StackLayout> e)
{
base.OnElementChanged(e);
if (Control == null)
SetNativeControl(new StackPanel());
if (e.NewElement != null)
Control.Children.Add(new TextBox{Text="Hello."});
}
}
}
CheckWordRecognizedLayout
- это пустой класс, производный от StackLayout
.
Я вижу TextBox
в живом дереве визуализации отладчика,Тем не менее, я не вижу его внутри приложения: ActualHeight
каждого элемента равно 0.
Я попытался обновить ограничивающие рамки элементов, определив их высоту вручную, обновив или аннулировав все макеты UIElement
s., но это не помогло.Даже пытался заменить целевой нативный тип с StackPanel
на TextBox
, но он тоже не появился.
Я пропустил какую-то важную конфигурацию?