2016-06-21 16 views
2

Ich versuche, eine benutzerdefinierte Renderer in UWP für Xamarin.Forms.Grid zu erstellen, aber ich kann nicht die Typ-Parameter für ViewRenderer<TElement, TNativeElement> kann mir jemand helfen?Benutzerdefinierte Renderer für Grid

Ich habe versucht, mit ViewRenderer<Grid, FrameworkElement> aber Control ist null

+0

Haben Sie versucht, die Verwendung nativer 'Grid':' Viewrenderer < Xamarin.Forms.Grid, Windows.UI.Xaml.Controls.Grid> '. Ich könnte Fehler in Namespaces haben. –

+0

Ja, und 'Control' ist' null' :( –

+0

Sie können etwas wie das versuchen .. https://forums.xamarin.com/discussion/44720/what-is-the-nativeelement-for-windows-phone- for-viewrenderer-for-a-view –

Antwort

1

Sie müssen die Steuerung setzen, indem OnElementChanged überschreiben So Ihre Ansicht Renderer Implementieren von vererben, wie Sie oben haben:

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

dann außer Kraft setzen 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); 
     } 
    } 
} 
0

Stellen Sie sicher, dass OnElem überschrieben wird entChanged die base.OnElementChanged vor dem Check zu nennen, wenn die Kontrolle ist null sonst wird es

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

     } 
-1

Für meine Zwecke habe ich null sein:

ViewRenderer<Grid, Android.Widget.GridView>