Xamarin.forms, как преобразовать строку в страницу - PullRequest
0 голосов
/ 17 января 2020

Это мой код в ViewModel

  async Task ExecuteMenu(object obj)
        {
            Page page = new Page();
            System.Reflection.Assembly asm = System.Reflection.Assembly.GetExecutingAssembly();
            Type t_form = asm.GetType(asm.GetName().FullName + "." + obj.ToString());
            page = Activator.CreateInstance(t_form) as Page;


            try
            {
                await Application.Current.MainPage.Navigation.PushAsync(new page());
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex);
            }
            finally
            {

            }
        }

У меня есть элементы меню, загружаемые из Command. В obj я передаю строку, которая содержит название выбранной страницы контента. Я не знаю, как преобразовать имя строки в имя объекта страницы. Этот код не работает. Я пытаюсь динамически вызывать страницы.

Ответы [ 2 ]

1 голос
/ 17 января 2020

Попробуйте это:

         var pageType= Type.GetType($"NamespaceOfYourView.{obj}");
         var page = Activator.CreateInstance(pageType) as Page;
         await Application.Current.MainPage.Navigation.PushAsync(page );
0 голосов
/ 17 января 2020

Заменить asm.GetName().Name на asm.GetName().FullName;

Вывод

GetName (). Имя : "ваше пространство имен"

GetName (). Полное имя : "ваше пространство имен, версия = 1.0.0.0, Культура = нейтральная, PublicKeyToken = null "

Очевидно, строка Name является правильной.

...