网格的自定义渲染器
Custom renderer for Grid
我正在尝试在 UWP
中为 Xamarin.Forms.Grid
创建自定义 Renderer
,但我无法弄清楚 ViewRenderer<TElement, TNativeElement>
的类型参数,有人可以帮忙吗我?
我试过 ViewRenderer<Grid, FrameworkElement>
但 Control
是 null
您需要通过覆盖 OnElementChanged 来设置控件
所以通过像上面那样继承来实现你的视图渲染器:
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);
}
}
}
确保在覆盖 OnElementChanged 时调用 base.OnElementChanged,然后再检查控件是否为 null,否则它将为 null
protected override void OnElementChanged(ElementChangedEventArgs<Xamarin.Forms.Entry> e)
{
base.OnElementChanged(e);
if (Control != null)
Control.BackgroundColor = UIKit.UIColor.Red;
}
出于我的目的,我使用了:
ViewRenderer<Grid, Android.Widget.GridView>
我正在尝试在 UWP
中为 Xamarin.Forms.Grid
创建自定义 Renderer
,但我无法弄清楚 ViewRenderer<TElement, TNativeElement>
的类型参数,有人可以帮忙吗我?
我试过 ViewRenderer<Grid, FrameworkElement>
但 Control
是 null
您需要通过覆盖 OnElementChanged 来设置控件 所以通过像上面那样继承来实现你的视图渲染器:
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);
}
}
}
确保在覆盖 OnElementChanged 时调用 base.OnElementChanged,然后再检查控件是否为 null,否则它将为 null
protected override void OnElementChanged(ElementChangedEventArgs<Xamarin.Forms.Entry> e)
{
base.OnElementChanged(e);
if (Control != null)
Control.BackgroundColor = UIKit.UIColor.Red;
}
出于我的目的,我使用了:
ViewRenderer<Grid, Android.Widget.GridView>