2016-06-21 3 views
2

Je suis en train de créer un Renderer personnalisé UWP pour Xamarin.Forms.Grid, mais je ne peux pas comprendre les paramètres de type pour ViewRenderer<TElement, TNativeElement> quelqu'un peut-il m'aider?Render personnalisé pour la grille

J'ai essayé avec ViewRenderer<Grid, FrameworkElement> mais Control est null

+0

Est-ce que vous essayez d'utiliser 'Grid' natif:' ViewRenderer < Xamarin.Forms.Grid, Windows.UI.Xaml.Controls.Grid> '. Je pourrais avoir une erreur dans les espaces de noms. –

+0

Oui, et '' Control' est null' :( –

+0

Vous pouvez essayer quelque chose comme ça .. https://forums.xamarin.com/discussion/44720/what-is-the-nativeelement-for-windows-phone- pour-ViewRenderer-pour-une-vue –

Répondre

1

Vous devez définir le contrôle en surchargeant OnElementChanged donc mettre en œuvre votre vue renderer en héritant comme vous l'avez fait ci-dessus:

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

puis passer outre 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

assurez-vous que lors de la substitution OnElem entChanged appeler la base.OnElementChanged avant vérifier si le contrôle est vide, sinon il sera nul

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

     } 
-1

Pour mes fins, j'ai utilisé:

ViewRenderer<Grid, Android.Widget.GridView>