Как я могу вызвать метод в классе AppShell приложения Xamarin, на которое у меня есть ссылка? - PullRequest
0 голосов
/ 08 февраля 2020
public partial class App : Application {
    public App() {
        InitializeComponent();
        MainPage = new AppShell();
    }
}

public partial class AppShell : Shell {
    public void abc() {
        Shell.SetTabBarForegroundColor(this, Color.Red);
        Shell.SetTabBarTitleColor(this, Color.Blue);
        Shell.SetTabBarIsVisible(this, false);
    }
    public AppShell() { }
}

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

var a = Application.Current.MainPage;
a.abc() << Doesn't work

Ответы [ 3 ]

1 голос
/ 08 февраля 2020

Лучший способ сделать это - использовать свойство Shell.Current, затем привести его к вашему типу пользовательской оболочки и вызвать метод, который вы хотите вызвать

var AppShellInstance= Xamarin.Forms.Shell.Current as AppShell;
AppShellInstance.abc();
1 голос
/ 10 февраля 2020
if (Application.Current.MainPage is AppShell a) {
    a.abc();
}
1 голос
/ 08 февраля 2020

AppShell MainPage; это должно НЕ быть объявлено в конструкторе, но переменная / поле класса.

using System;

public class Program
{   

    public class App {      
        public static AppShell MainPage; //Put this outside constructor
        static App () {
            MainPage = new AppShell();
        }
    }


    public class AppShell   {
        public void abc() {
            Console.WriteLine("AppShell::abc");
        }
        public AppShell() { }
    }

    public static void Main()
    {
        App.MainPage.abc();
        Console.WriteLine("Hello World");
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...