Grid的自定义渲染器

时间:2016-06-21 07:31:00

标签: xamarin xamarin.forms uwp renderer

我正在RendererUWP创建一个自定义Xamarin.Forms.Grid,但我无法弄清楚ViewRenderer<TElement, TNativeElement>的类型参数可以帮助我吗?

我尝试使用ViewRenderer<Grid, FrameworkElement>,但Controlnull

3 个答案:

答案 0 :(得分:1)

您需要通过覆盖OnElementChanged来设置Control 因此,通过像上面那样继承来实现您的视图渲染器:

ViewRenderer<Xamarin.Forms.Grid, XControl.Grid>

然后覆盖OnElementChanged:

using XControl = Windows.UI.Xaml.Controls;
.
.
.
protected override void OnElementChanged(ElementChangedEventArgs<XControl.Grid> e)
{
   if (e.NewElement != null)
   {
      if (Control == null)
      {
         var container = new XControl.Grid();
         SetNativeControl( container);
      }
   }
}

答案 1 :(得分:0)

确保在检查控件是否为空之前重写OnElementChanged以调用base.OnElementChanged,否则它将为null

 protected override void OnElementChanged(ElementChangedEventArgs<Xamarin.Forms.Entry> e)
        {
            base.OnElementChanged(e);
            if (Control != null)
           Control.BackgroundColor = UIKit.UIColor.Red;

        }

答案 2 :(得分:-1)

出于我的目的,我使用了:

ViewRenderer<Grid, Android.Widget.GridView>