我正在Renderer
为UWP
创建一个自定义Xamarin.Forms.Grid
,但我无法弄清楚ViewRenderer<TElement, TNativeElement>
的类型参数可以帮助我吗?
我尝试使用ViewRenderer<Grid, FrameworkElement>
,但Control
是null
答案 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>