2016-06-21 4 views
2

Я пытаюсь создать пользовательский Renderer в UWP для Xamarin.Forms.Grid, но я не могу выяснить, какие параметры типа для ViewRenderer<TElement, TNativeElement> может кто-нибудь мне помочь?Custom renderer for Grid

Я попытался с ViewRenderer<Grid, FrameworkElement> но Control является null

+0

Пробовали ли вы использовать родную 'Grid':' ViewRenderer < Xamarin.Forms.Grid, Windows.UI.Xaml.Controls.Grid> '. Я мог ошибаться в пространствах имен. –

+0

Да, и 'Control' является' null' :( –

+0

Вы можете попробовать что-то вроде этого .. https://forums.xamarin.com/discussion/44720/what-is-the-nativeelement-for-windows-phone- for-viewrenderer-for-a-view –

ответ

1

Вы должны установить контроль Переопределелив 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); 
     } 
    } 
} 
0

убедитесь, что при переопределении OnElem entChanged вызвать base.OnElementChanged до проверки, если контроль является недействительным в противном случае он будет нулевым

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

     } 
-1

Для моих целей я использовал:

ViewRenderer<Grid, Android.Widget.GridView> 
Смежные вопросы