在我的主页面上,我加载当前元素并显示数据(例如卡片)。用户可以使用PushAsync导航到详细信息或编辑页面并更新数据。从导航栏返回时不会调用OnAppearing,因此我无法刷新地图(设置位置)。
解决方法可能如下: 主页面>详细页面>编辑页面
从EditPage中我返回两次(DetailPage和MainPage)。我的对象本身是最新的,通过OnPropertyChanged获取更改,所以我也拥有当前位置。
我应该使用MessagingCenter还是有其他/更好的选择?Xamarin Forms版本为4.0,并且我使用shell。
最初的回答:您可以尝试使用MessagingCenter来在页面之间传递消息。除此之外,还有一些其他选项可供选择,但这取决于您的具体情况和需求。请注意,您正在使用的Xamarin Forms版本为4.0,并且使用shell。
解决方法可能如下: 主页面>详细页面>编辑页面
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,并且我使用shell。
最初的回答:您可以尝试使用MessagingCenter来在页面之间传递消息。除此之外,还有一些其他选项可供选择,但这取决于您的具体情况和需求。请注意,您正在使用的Xamarin Forms版本为4.0,并且使用shell。