アンドロイド用のMapViewでマーカーをクリックすると表示される情報コンテンツウィンドウをバインドしようとしています。AndroidでMvvmCrossを使用してViewModelでAndroid.Views.Viewをバインドする
私は、ItemSourceとMapView(ObservableCollection)を取り、コレクションの変更に合わせてマーカーにマーカーを追加するカスタムマネージャークラスを作成しました。
今私は現在、私は手動で以下のようにフィールドを移入取得することを強制していますGetInfoContents(Marker marker)
によって生成されたInfoContentウィンドウをバインドしたいと思いますが、私はとレイアウトに直接結合データとフィールドを希望します現在のViewModel
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;
}
私は、異なるクラスのobservableコレクションからマーカーをデータバインドするマネージャーを持っています。このクラスのシグネチャは 'public abstract class BaseMapViewDataBindingSource:Java.Lang.Object、IOnMapReadyCallback、GoogleMap.IInfoWindowAdapter 'です。 BindingInflateはそこから利用できません – wishmaster
これは問題です。私はちょっと更新しましたが、あまり幸せではありません。 BindingContextがなければ、MvvmCross Bindingは使用できません。 – Matt