Я создал собственную карту, используя 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};
}
MapCenterPosition.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. Но как я могу вызвать какой-либо метод в моей ViewModel при обновлении MapCenter?