Ich versuche, das Info-Inhalt-Fenster zu binden, das beim Klicken auf eine Markierung in einem MapView für Android angezeigt wird.Binding Android.Views.View mit ViewModel mit MvvmCross auf Android
Ich habe eine benutzerdefinierte Manager-Klasse erstellt, die eine ItemSource und eine MapView (ObservableCollection) annimmt und Markierungen in der Map hinzufügt, wenn sich die Auflistung ändert.
Jetzt würde ich gerne das InfoContent Fenster binden, die derzeit von GetInfoContents(Marker marker)
erzeugt wird, bin ich gezwungen, rufen Sie die Felder manuell wie unten bevölkert, aber ich würde die Felder wie Daten direkt mit der im Layout gebunden zu sein aktuelle Ansichtsmodell
public override Android.Views.View GetInfoContents(object item, Marker marker)
{
var vm = item as DetailCalloutViewModel;
if (vm != null) {
var view = _layoutInflater.Inflate(Resource.Layout.view_store_marker_info_window, null);
var address = view.FindViewById<TextView>(Resource.Id.address);
var description = view.FindViewById<TextView>(Resource.Id.description);
var badge = view.FindViewById<TextView>(Resource.Id.badge);
address.Text = vm.Address;
description.Text = vm.Location.Description;
badge.Text = vm.BadgeNumber;
return view;
}
return null;
}
Ich habe den Manager, der die Marker aus der beobachtbaren Sammlung in einer anderen Klasse bindet. Die Signatur der Klasse lautet: public abstract class BaseMapViewDataBindingSource: Java.Lang.Object, IOnMapReadyCallback, GoogleMap.IInfoWindowAdapter 'und dies. BindingInflate ist von dort nicht verfügbar – wishmaster
Ok, ich sehe das Problem. Ich habe ein wenig aktualisiert, aber nicht sehr glücklich. Ohne BindingContext können Sie die MvvmCross-Bindung nicht verwenden. – Matt