Это не имеет никакого отношения ко времени обновления вашего свойства.
Вы связали MapPosition
с MyPosition
, что, я думаю, является свойством. Чтобы MVVM работал, этот MapPosition
должен уведомить, что он изменился, обычно это выглядит примерно так (документация INotifyPropertyChanged.PropertyChanged
)
public MapLocation MyPosition
{
get => myPosition;
set
{
if(myPosition == value)
{
return;
}
myPosition = value;
OnPropertyChanged();
}
}
private void OnPropertyChanged([CallerMemberName] string memberName = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
Ваше мнение знает что если связанные объекты реализуют INotifyPropertyChanged
, он должен подписаться на PropertyChanged
и может соответствующим образом обновить свое состояние, если это событие вызвано.
Теперь, почему это не работает в вашем случае?
Вы не настраиваете MyPosition
, позволяя установщику поднять PropertyChanged
и, таким образом, представление обновляет свое состояние, но вы непосредственно устанавливаете поле поддержки myPosition
. В этом случае установщик никогда не вызывается, и у представления нет шансов узнать, что значение MyPosition
изменилось, поэтому оно не будет обновлять свое состояние.
Если ваш установщик реализует шаблон, показанный выше, просто измените
myPosition = new Position(mapLocation.Lat, mapLocation.Lng);
на
MyPosition = new Position(mapLocation.Lat, mapLocation.Lng);
, и оно должно работать. В противном случае используйте шаблон уведомления об изменениях и в MyPosition
.