xaml – OnAppearing事件触发两次.with标签页

xaml – OnAppearing事件触发两次.with标签页,第1张

概述我面临的问题是Xamarin表单和MVVM的初学者.我有标签页,标签下有2页.这是代码.                                   问题是本地的:ActiveOrderViewPage页面OnAppearing()事件在tabbedPage加载时触发两次,并在OnAppearing()事件下执行两次代码. 请帮我找到这个为什么会这样? 这是代码选项卡页面  tabbedp 我面临的问题是Xamarin表单和MVVM的初学者.我有标签页,标签下有2页.这是代码.
    
          
          
      

问题是本地的: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标签页所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1030731.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存