我正在尝试在Xamarin中创建一个自定义布局,该布局在每个平台上都包含不同的元素(主要是UWP->文本框,Android->按钮)。
我跟随the Xamarin tutorials创建了一个自定义渲染器:
[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
的布局无效来更新元素的边界框,但这没有帮助。甚至尝试将目标本机类型从StackPanel
替换为TextBox
,但也没有出现。
我错过了一些重要的配置吗?