2014-09-23 197 views
1

我在我的项目中使用Xamarin Forms。将Android View作为自定义控件集成到Xamarin.Forms

基本上我想在我的表单中整合一个custom control。 此组件与Android视图(axml)一起提供,我无法找到将其包含到我的共享Xamarin Forms项目中的方法。

我试图创建一个自定义呈现:

[assembly: ExportRenderer(typeof(RadialControl), typeof(RadialControlRenderer))] 
namespace EA.Indemnisation.Renderers 
{ 
    public class RadialControlRenderer : ViewRenderer 
    { 
     protected override void OnDraw(Android.Graphics.Canvas canvas) 
     { 
      base.OnDraw(canvas); 

      SetContentView(Resource.Layout.Radial); // How can I include my view as component into the form? 

      var bigRadialProgress = FindViewById<RadialProgressView>(Resource.Id.bigProgress); 
      var smallRadialProgress = FindViewById<RadialProgressView>(Resource.Id.smallProgress); 
      var tinyRadialProgress = FindViewById<RadialProgressView>(Resource.Id.tinyProgress); 
     } 
    } 
} 

没有帮助我,因为我没能获得Android的看法,与它互动,包括在我的形式。

我也看过如何将Android.Views.View转换为Xamarin.Forms.View,但我找不到这样做的方法。

将自定义控件集成到Xamarin Forms应用程序的方式是什么?

回答

2

你开始正确的方向。覆盖OnElementChanged,因为你应该创建你的Android视图。

喜欢的东西:

protected overrie void OnElementChanged(ElementChangedEventArgs<RadialControl> e) 
{ 
    if (Control == null) { 
     YourView yourView = new YourView(base.Context); 
     SetNativeControl(yourView); 
    } 
    // update and/or bind properties & events 
    .... 
} 

Furthermo赶上RadialControl的属性来更改你重写OnElementPropertyChanged;

相关问题