Xamarin.Forms并访问自定义渲染器中的本机控件

时间:2014-06-23 18:50:42

标签: xamarin renderer xamarin.forms

如何获取对特定本机视图的引用,而不是UIView? 这是我的自定义标签渲染器:

   public class MyLabelRenderer : LabelRenderer
   {
       protected override void OnElementChanged(ElementChangedEventArgs<Label> e)
       {
            //how to get UILabel reference created by base LabelRender?
            base.OnElementChanged(e);
       }
   }

我以Renderer Sample为例。

3 个答案:

答案 0 :(得分:1)

您使用的参考已过时。使用此http://forums.xamarin.com/discussion/comment/59303

如果您调用Control,则可以通过SetNativeControl()属性访问原生视图:

    protected override void OnElementChanged (ElementChangedEventArgs<MyCustomView> e)
    {
        base.OnElementChanged (e);

        if (e.OldElement == null) {
            // perform initial setup
            SetNativeControl (new UIMyCustomView (RectangleF.Empty));
        }

        UpdateSomething ();
    }

答案 1 :(得分:0)

尝试使用e.OldElemente.NewElement

答案 2 :(得分:0)

您需要使用渲染器的Control属性。它理论上应该在OnElementChanged方法中可用。但是,在像UWP这样的平台上,自定义渲染器实际上就是原生控件。