问题是本地的:ActiveOrderVIEwPage页面OnAppearing()事件在tabbedPage加载时触发两次,并在OnAppearing()事件下执行两次代码.
请帮我找到这个为什么会这样?
这是代码选项卡页面
tabbedpage.xaml
<TabbedPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" title="Orders"><TabbedPage.Children> <local:ActiveOrderVIEwPage /> <local:SavedOrderVIEwPage /></TabbedPage.Children>
tabbedpage.xaml.cs
public partial class OrderTabVIEwPage : TabbedPage{ public Orderviewmodel viewmodel { get { return BindingContext as Orderviewmodel; } } public OrderTabVIEwPage() { InitializeComponent(); this.BindingContext = viewmodelLocator.OrderVModel; } public OrderTabVIEwPage(params object[] arg) : this() { if (arg != null) { viewmodel.AccountID = Convert.ToInt32(arg[0]); } }
这是有效订单.cs
public partial class ActiveOrderVIEwPage : ContentPage{ public Orderviewmodel viewmodel { get { return BindingContext as Orderviewmodel; } } public ActiveOrderVIEwPage() { InitializeComponent(); this.BindingContext = viewmodelLocator.OrderVModel; } //public OrderVIEwPage() : this() //{ // viewmodel.AccountID = accuntID; //} protected overrIDe voID OnAppearing() { base.OnAppearing(); if (viewmodelLocator.OrderVModel.ActiveOrderItems == null || viewmodelLocator.OrderVModel.ActiveOrderItems.List.Count == 0) { viewmodelLocator.OrderVModel.ActiveOrderCommand.Execute(null); } }
提前致谢 …
解决方法 很长一段时间遇到这个问题,在意识到之前,我知道这是多么令人沮丧.由于选项卡式页面呈现所有单个页面的方式,OnAppearing()事件会触发两次.它最初呈现页面,然后在您的情况下将呈现另一页,这将导致Ondisappearing()触发.然后第一页获得焦点,导致OnAppearing()再次触发.如果您只希望代码触发一次,在添加子页面后,将currentpage属性设置为null,这应该会停止OnAppearing()再次触发
总结以上是内存溢出为你收集整理的xaml – OnAppearing事件触发两次.with标签页全部内容,希望文章能够帮你解决xaml – OnAppearing事件触发两次.with标签页所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)