【发布时间】:2020-02-28 09:57:28
【问题描述】:
我使用 Xamarin Forms Map 创建了一个自定义地图。我想在 VisibleRegion 更改时访问更新的 VisibleRegion。
自定义渲染器
protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
{
base.OnElementPropertyChanged(sender, e);
if (Element == null)
return;
var map = (CustomMap)sender;
if(map.VisibleRegion==null)
return;
map.OnMapRegionUpdated();
}
在自定义控件中我创建了一个可绑定属性
public MapCenterPosition MapCenter { get; set; }
public static readonly BindableProperty MapCenterProperty = BindableProperty.Create(
nameof(MapCenter),
typeof(MapCenterPosition),
typeof(CustomMap),
null);
public void OnMapRegionUpdated()
{
MapCenter = new MapCenterPosition {Position = VisibleRegion.Center};
}
地图中心位置.cs
public class MapCenterPosition: INotifyPropertyChanged
{
private Position _position;
public event PropertyChangedEventHandler PropertyChanged;
public void RaisePropertyChange([CallerMemberName]string propertyname = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyname));
}
public Position Position
{
get => _position;
set
{
_position = value;
RaisePropertyChange();
}
}
}
现在我有了 CustomMap 并将其绑定到 ViewModel 代码。但是,当 MapCenter 更新时,如何在 ViewModel 中触发某些方法?
【问题讨论】:
标签: c# xaml xamarin xamarin.forms