2016-11-21 2 views
-1

У меня есть страница с вкладками с stacklayout, которую я заполняю некоторыми дочерними элементами управления. На странице первоначально не было навигации, но теперь я добавил вкладку (созданную программно в app.cs), это означает, что приведенный ниже метод не может заполнить стек стеллажей выбранной вкладки.Как получить доступ к управлению текущей вкладкой?

Мне нужно знать, как получить доступ к текущей вкладке, а затем добавить элементы в stacklayout.

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 свойство, которое возвращает ссылку на текущую активную страницу.

Если MainPage наследует от TabbedPage, вы можете сделать это

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

Edit: на основе кода, который вы вставили в комментариях

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

Я попробовал это унаследовав TabbedPage, но теперь на в первой строке говорится, что «Невозможно преобразовать», а во второй строке нет определения «CurrentPage» – connersz

+0

в вашем App.cs (или App.xaml.cs) при назначении MainPage, который будет классом, на который указывает Current.MainPage. Наследует ли этот класс от TabbedPage? – Jason

+0

Это выглядит так: MainPage = new TabbedPage {Children = {new MainPage(), новый CompanySetup {BackgroundColor = Color.FromHex ("baf4d5")}, новый ChangePassword {BackgroundColor = Color.FromHex ("baf4d5")} }}; – connersz

Смежные вопросы