我正在尝试绑定在Android版MapView中单击标记时显示的信息内容窗口。
我创建了一个自定义管理器类,该类采用 ItemSource 和 MapView(ObservableCollection),并在集合更改时在地图上添加标记。
现在我想绑定由 GetInfoContent(标记标记)生成的信息内容窗口
目前我被迫检索手动填充字段,如下所示,但我希望字段直接绑定在当前 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;
}
Mabye 你应该尝试从 BindingContext 开始 BindingInfwell:
var view = this.BindingInflate(Resource.Layout.SomeLayout, null);
更新:对于您的问题,我不确定这是否太黑客,但是您可以在MainActivity中使用Mvx.RegisterSingleton(BindingContext);
,然后通过var bindingContext = Mvx.Resolve<IMvxBindingContext>();
解决此问题。
替代方法:您可以订阅 vm.PropertyChanged 事件并自行处理更改 - 实际上编写自己的 BindingContext。