Vinculación de OxyPlot a través de MVVMCross en Xamarin.Android

He añadido OxyPlot Android y Core en mi proyecto basado en Xamarin PCL donde estoy usando MVVMCross .

He añadido el plotview en mi xml como sigue. Pero no sé cómo vincular esta vista usando MVVMCross.

¿Hay algún buen ejemplo o recursos a seguir?

MyView.xml

 <oxyplot.xamarin.android.PlotView android:id="@+id/plot" android:layout_width="match_parent" android:layout_height="match_parent" /> 

MyView.cs

 public class MyView : MvxFragment<MyViewModel> { public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { var ignored = base.OnCreateView(inflater, container, savedInstanceState); var view = this.BindingInflate(Resource.Layout.MyView, null) MyViewModel MyMainViewModel = new MyViewModel(); var a = view.FindViewById<PlotView>(Resource.Id.plot); a.Model = MyViewModel.MyModel; return view; } } 

MyViewModel.cs

 public PlotModel MyModel { get; set; } public MyViewModel { PlotModel mo = new PlotModel(); var s1 = new LineSeries() { Color = OxyColors.SkyBlue, MarkerType = MarkerType.Circle, MarkerSize = 6, MarkerStroke = OxyColors.White, MarkerFill = OxyColors.SkyBlue, MarkerStrokeThickness = 1.5 }; s1.Points.Add(new DataPoint(0, 10)); s1.Points.Add(new DataPoint(10, 40)); s1.Points.Add(new DataPoint(40, 20)); s1.Points.Add(new DataPoint(60, 30)); mo.Series.Add(s1); MyModel = mo; } 

Información adicional para la instalación de OxyPlot

He añadido OxyPlot de la siguiente manera a través de la consola de paquetes.

En el PCL

 PM> Install-Package OxyPlot.Core -Version 1.0.0-unstable1983 -Pre 

En el Android

 PM> Install-Package OxyPlot.Xamarin.Android -Pre 

O también puede agregarlos en Nuget Console desde la librería prelease.

Usted debe ser capaz de lograr lo que desea utilizando estándar Mvx vinculación de la propiedad. No se requiere un enlace personalizado.

Ejemplo basado en la pregunta:

Enfoque 1: Unión fluida

ViewModel

 public class MyViewModel : MvxViewModel { public MyViewModel() { GeneratePlotPoints(); } void GeneratePlotPoints() { var mo = new PlotModel(); var s1 = new LineSeries() { Color = OxyColors.SkyBlue, MarkerType = MarkerType.Circle, MarkerSize = 6, MarkerStroke = OxyColors.White, MarkerFill = OxyColors.SkyBlue, MarkerStrokeThickness = 1.5 }; s1.Points.Add(new DataPoint(0, 10)); s1.Points.Add(new DataPoint(10, 40)); s1.Points.Add(new DataPoint(40, 20)); s1.Points.Add(new DataPoint(60, 30)); mo.Series.Add(s1); MyModel = mo; } PlotModel _myModel; public PlotModel MyModel { get { return _myModel; } set { SetProperty(ref _myModel, value); } } } 

Ver / Diseño

 <oxyplot.xamarin.android.PlotView android:id="@+id/plot" android:layout_width="match_parent" android:layout_height="match_parent" /> 

Fragmento / código detrás

 public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { var ignored = base.OnCreateView(inflater, container, savedInstanceState); var view = this.BindingInflate(Resource.Layout.MyView, null); var graphControl = view.FindViewById<PlotView>(Resource.Id.plot); var bindset = this.CreateBindingSet<MyView, MyViewModel>(); bindset.Bind(graphControl).For(c => c.Model).To(vm => vm.MyModel); bindset.Apply(); return view; } 

Enfoque 2: Enlace Xml

ViewModel

Lo mismo que arriba

Ver / Diseño

 <oxyplot.xamarin.android.PlotView android:id="@+id/plot" android:layout_width="match_parent" android:layout_height="match_parent" local:MvxBind="Model MyModel"/> 

Fragmento / Código detrás

No es necesario un código de enlace, sólo asegúrese de ejecutar el diseño a través del inflador de encuadernación.

 public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { var ignored = base.OnCreateView(inflater, container, savedInstanceState); return this.BindingInflate(Resource.Layout.MyView, null); } 
  • Java.IO.ISerializable Xamarin
  • Mono.Data.Sqlite.SqliteConnection.SetConfig lanza una biblioteca utilizada incorrectamente excepción
  • Estoy tratando de hacer mono android simple "hola mundo", pero no veo "hola mundo" en el emulador por qué?
  • Mono para Android - ¿Cómo acelerar la depuración?
  • Mono para Android - Arquitectura soportada - Drop x86?
  • Necesito un ejemplo de sqlite con Monodroid
  • App Crash instantáneamente sin excepción o registro (parece como xamarin / mono error)
  • ¿Cómo puedo cambiar colores en mi StateListDrawable?
  • (Android Xamarin) Obtener valor de cadena de recursos en lugar de int
  • Ocultar entrada suave en OnCreate
  • Selección de Intenciones de Android para mostrar sólo la opción de correo electrónico
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.