На моей главной странице я загружаю текущий элемент и отображаю такие данные, как карточка.Пользователь может использовать PushAsync для перехода на страницу сведений или редактирования и обновления данных.
Возврат с панели навигации не вызывает OnAppearing, поэтому я не могу обновить карту (указать местоположение).
Способ может выглядеть следующим образом: MainPage> DetailPage> EditPage
public MainPage()
{
InitializeComponent();
SetLocation();
}
protected override async void OnAppearing()
{
base.OnAppearing();
var vm = BindingContext as MainViewModel;
await vm?.InitializeAsync(null);
SetLocation();
}
void SetLocation()
{
try {
var location = (BindingContext as MainViewModel).Location;
if (location == null) {
location = DataObjects.Location.Parse(AppSettings.Current.FallbackMapsLocation);
}
var initialPosition = new Position(
location.Latitude,
location.Longitude);
var mapSpan = MapSpan.FromCenterAndRadius(
initialPosition,
Distance.FromMiles(1.0));
Map.MoveToRegion(mapSpan);
}
catch (FeatureNotSupportedException) {
}
}
Из EditPage я дважды перехожу назад (DetailPage, а затем MainPage).Сам мой объект обновлен и получает изменения через OnPropertyChanged, поэтому у меня также есть текущее местоположение.
Должен ли я использовать MessagingCenter или есть другие / лучшие варианты?Версия Xamarin Forms 4.0, и я использую оболочку