Intereting Posts
Android Studio с использованием библиотеки и проекта с тем же именем пакета Элементы в ActionBarCompat всегда отображаются в Overflow Значок Android SeekBar, где находятся значения Android: AlertDialog с пользовательским представлением и закругленными углами FileNotFoundException: res / drawable-xhdpi-v4 / foo.png только в журналах сбоев в Play Маркете Добавление элементов в Endless Scroll RecyclerView с помощью recycliewiew ReverseLayout Android studio 0.4.2 + gradle + Android Исходный код Как настроить пользовательское хранилище ключей для отладки в eclipse для Android Как показать диалог, подтверждающий, что пользователь хочет выйти из Android-активности? Как получить ширину и высоту файла android.widget.ImageView? Как активировать кнопку «Поделиться» в приложении Android? Ошибка getGoogleAppId со статусом: 10 Android KitKat – GCM и Google Drive Вес RelativeLayout Android: создание родительского макета и расширение его, чтобы поддерживать одинаковый внешний вид во всех действиях приложения Как установить базовое время Android Chronometer из объекта Date?

Связывание OxyPlot через MVVMCross в Xamarin.Android

Я добавил OxyPlot Android и Core в моем проекте на основе Xamarin PCL, где я использую MVVMCross .

Я добавил plotview в свой xml следующим образом. Но я не знаю, как связать это представление с помощью MVVMCross.

Есть ли хороший пример или ресурсы для подражания?

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; } 

Дополнительная информация для установки OxyPlot

Я добавил OxyPlot следующим образом через Консоль пакета.

В PCL

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

В Android

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

Или вы также можете добавить их в Nuget Console из предварительной библиотеки.

Solutions Collecting From Web of "Связывание OxyPlot через MVVMCross в Xamarin.Android"

Вы должны иметь возможность добиться того, чего хотите, используя стандартную привязку свойств Mvx. Никакой пользовательской привязки не требуется.

Пример, основанный на вопросе:

Подход 1: Свободное связывание

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); } } } 

Посмотреть / Layout

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

Фрагмент / код за

 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; } 

Подход 2: привязка Xml

ViewModel

То же, что и выше

Посмотреть / Layout

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

Фрагмент / код за

Не требуется код привязки, просто убедитесь, что вы запустили макет через перегружатель.

 public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { var ignored = base.OnCreateView(inflater, container, savedInstanceState); return this.BindingInflate(Resource.Layout.MyView, null); }