2016-08-03 6 views
4

私は、XamarinフォームとMVVMの初心者の問題に直面しています。私はタブページを持っていて、2ページがタグの下にあります。ここにコードがあります。

OnAppearingイベントの2回目.withタブ付きページ

問題はローカルです:tabbedPageをロードし、OnAppearing()イベントの下で二度のコードを実行されたときにActiveOrderViewPageページ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]); 
     } 
    } 

をタブ付きです

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); 
     } 


    } 

.CSアクティブオーダーであります事前にありがとうございます...

+0

を発射からOnAppearing()を停止する必要があり

あなただけのコードを一度起動するようにしたい場合は、子ページを追加した後、nullにcurrentpageプロパティを設定するには、あなたが..becauseを試してみましたどのようなコードを追加してください可能性がありそれなしであなたの問題を構成することはできませんか? – stylishCoder

+0

私は両方のページのコードを追加しました。あなたは同じ問題を持っている – user2797910

+0

を見てください...あなたはそれを修正するために管理しましたか? – MariusK

答えて

0

実現する前に、私は長い時間この問題を抱えていましたが、これはどれほどイライラしているのですか。イベントOnAppearing()は、タブ付きページがすべての個々のページをレンダリングする方法のために2回発生します。最初にページがレンダリングされ、その場合は別のページがレンダリングされ、OnDisappearing()が起動します。最初のページがフォーカスを取得し、OnAppearing()が再び発生します。再び

関連する問題