Kal*_*a J 0 c# android xamarin xamarin.forms
所以,我有一个母版页,其中包含您从页面A上的汉堡包图标访问的左侧菜单.
在左侧菜单中,我有一个名为"刷新页面A"的按钮,当我单击该按钮时,我希望页面A的内容已经在堆栈顶部进行刷新/重新加载.
但是,我遇到了一个问题,因为构造函数onResume和onAppearing没有被调用.我不知道如何让左侧菜单按钮刷新页面A.
在我的LeftMenu课程中,我有类似的东西
this.Add(new MenuItem()
{
Title = "Refresh Page A",
Icon = "icon.png",
SelectedIconSource = "icona.png",
TargetType = typeof(PageA),
Tcolor = COLOR_MENU,
SelectedTColor = Color.White,
MenuType=MenuType.PageAType,
ToolbarResource = Resource.Layout.mainpage_toolbar
});
Run Code Online (Sandbox Code Playgroud)
这就是我导航到页面的方式:
case MenuType.PageAType:
Pages.Add(id, new NavigationPage(new PageA ()));
break;
Run Code Online (Sandbox Code Playgroud)
那我该如何刷新页面呢?我有一个我可以使用的刷新方法,但应该从哪里调用?
所以我看到了几种方法来做到这一点.
因此,在您的交换机案例中检测将要显示哪种页面类型(您已经这样做了),那么如果当前页面是相同的类型,请不要再次导航,只需调用刷新方法:
case MenuType.PageAType:
if (_currentPage != null && _currentPage.GetType() == typeof(PageA))
{
var page = (PageA)_currentPage;
page.Refresh();
}
else
{
_currentPage = new PageA();
Pages.Add(id, new NavigationPage(_currentPage);
}
break;
Run Code Online (Sandbox Code Playgroud)
在您要刷新的页面中:
MessagingCenter.Subscribe<MasterDetailPage>(this, "Refresh", (s) => {
Refresh();
});
Run Code Online (Sandbox Code Playgroud)
此行订阅来自类型发件人的"刷新"消息MasterDetailPage.当收到它时,它会调用该Refresh方法.
然后在您的开关案例中进行导航:
MessagingCenter.Send<MasterDetailPage>(this, "Refresh");
Run Code Online (Sandbox Code Playgroud)
这将向此消息的所有订阅者发送消息.
| 归档时间: |
|
| 查看次数: |
2939 次 |
| 最近记录: |