2016-11-21 8 views
-1

私はいくつかの子コントロールを設定するスタックレイアウトを持つタブ付きのページを持っています。ページはもともとナビゲーションがありませんでしたが、タブ付きのページ(app.csにプログラムで作成)を追加しました。これは、以下のメソッドが選択したタブ付きページのスタックレイアウトには挿入できないことを意味します。現在のTabbedPageでコントロールにアクセスするには?

現在のタブ付きページにアクセスして、アイテムをスタックレイアウトに追加する方法を知る必要があります。

public static void addToReadout(string name, string time, string inout) 
{ 
    try 
    { 
     Label label1 = new Label { Text = name + " Successfully clocked " + inout + " @ " + time, TextColor = Color.Black }; 
     StackLayout sl = new StackLayout(); 


     var mp = (MainPage)App.Current.MainPage; 


     if (mp.readOut.Children.Count() < 7) 
     { 

      mp.readOut.Children.Add(label1); 
      mp.readOut.Children.Count(); 
     } 
     else 
     { 
      mp.readOut.Children.RemoveAt(0); 
      mp.readOut.Children.Add(label1); 
      mp.readOut.Children.Count(); 
     } 

    } 
    catch (Exception ex) 
    { 

     ErrorRepository.InsertError(ex.ToString()); 
    } 
} 

この問題は、タブ付きページ設定に変更するので、この行を次のとおりです。

var mp = (MainPage)App.Current.MainPage; 

答えて

-1

TabbedPageは、現在アクティブなページへの参照を返しますCurrentPage特性を有しています。

あなたのメインページはTabbedPageから継承する場合、あなたはこの

var mp = (MainPage)App.Current.MainPage; 
var current = mp.CurrentPage; 

編集を行うことができます:あなたはコメント

var mp = (TabbedPage)App.Current.MainPage; 
var main = mp.CurrentPage; 
+0

に貼り付けたコードに基づいてを私はTabbedPageを継承することで、これを試してみましたが、今で最初の行は変換できないと言い、2行目にMainPageを割り当てるとCurrent.MainPageが指すクラスになるように、 'CurrentPage' – connersz

+0

がApp.cs(またはApp.xaml.cs)に定義されていないと表示されます。そのクラスはTabbedPageから継承していますか? – Jason

+0

これは次のようなものです:MainPage = new TabbedPage {Children = {新しいMainPage()、新しいCompanySetup {BackgroundColor = Color.FromHex( "baf4d5")}、新しいChangePassword {BackgroundColor = Color.FromHex( "baf4d5")} }}; – connersz

関連する問題