自定义渲染器的视图大小未更新

时间:2019-02-28 12:24:57

标签: c# xamarin.forms stackpanel custom-renderer

我正在尝试在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,但也没有出现。

我错过了一些重要的配置吗?

0 个答案:

没有答案