我正在尝试绑定在单击MapView for android中的标记时显示的信息内容窗口。
我创建了一个自定义管理器类,它接受一个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;
}
答案 0 :(得分:0)
Mabye你应该从BindingContext尝试BindingInflate:
var view = this.BindingInflate(Resource.Layout.SomeLayout, null);
更新:对于您的问题,我不确定这是不是太苛刻,但您可以在MainActivity中使用Mvx.RegisterSingleton(BindingContext);
,然后通过var bindingContext = Mvx.Resolve<IMvxBindingContext>();
解决此问题。
替代方案:您可以订阅自己的vm.PropertyChanged事件并自己处理更改 - 实际上是编写自己的BindingContext。