2014-12-04 4 views
2

В настоящее время я пытаюсь понять, как получить имя страницы (xaml), с которой я вхожу, с моим приложением Xamarin Form.Получить имя текущей страницы в приложении Xamarin Forms

Как я должен это делать? Я пробовал различные случаи, даже не глядя вокруг Интернета, но ничего на самом деле не работает для меня до сих пор:/

+1

Что вы подразумеваете под "именем"? Имя класса страницы? Имя, назначенное в XAML? Или свойство Title? – Jason

+0

Имя, назначенное в XAML, например, MainPage.xaml, я бы хотел получить на выходе «MainPage» –

ответ

8

Это просто C# отражение - название страницы XAML должно совпадать с именем своего класса

var name = this.GetType().Name; 
+0

Абсолютно великолепный, спасибо за помощь, это был один из немногих кодов, о которых я даже не думал про попытку. Благодаря! –

5

Я знаю, что это было разрешено, и сценарий несколько отличается, но в моем конкретном случае мне нужно было идентифицировать текущую страницу в стеке навигации из кода конкретной платформы, поэтому на всякий случай это может помочь кому-то другому, это код Я использовал:

Я использовал свойство title, которое было установлено в конструкторе страницы.

public static string GetCurrentPage() 
     { 
      var page = App.Navigation.NavigationStack.Last(); 
      return page.Title; 
     } 
5

Вы бы (обычно) использовать засыхаете приложение на одну страницы (Master/Detail, вкладки страницы) или набор судоходных страниц, управляемое с помощью NavigationPage. App.Current.MainPage будет (обычно) содержать первую показанную страницу и если она имеет .Navigation, которая будет NavigationPage, которая может дать вам последнюю показанную страницу - последнюю в стеке. Если это не так, вы можете предположить, что ваше приложение является одностраничным.

Все вышесказанное является просто «общим» и не обязательно истинным во всех случаях, но дает вам отправную точку для поиска вашей текущей страницы.

var actionPage = App.Current.MainPage; 
if (actionPage.Navigation != null) 
    actionPage = actionPage.Navigation.NavigationStack.Last(); 
actionPage.DisplayActionSheet(...) 
+0

Хотя этот фрагмент кода может решить вопрос, [включая объяснение] (// meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers) действительно помогает улучшить качество вашего сообщения. Помните, что вы отвечаете на вопрос читателей в будущем, и эти люди могут не знать причин вашего предложения кода. Также попробуйте не толковать код с пояснительными комментариями, так как это уменьшает читаемость кода и объяснений! – FrankerZ

+0

@FrankerZ добавил немного описания –

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