Xamarin.Forms Uygulama Sınıfı

Application Temel sınıf, projelerinizin varsayılan App alt sınıfında gösterilen aşağıdaki özellikleri sunar:

  • MainPage Uygulamanın ilk sayfasının ayarlanacağı yer olan özellik.
  • Yaşam döngüsü durumu değişiklikleri arasında basit değerleri depolamak için kalıcı Properties bir sözlük .
  • Geçerli uygulama nesnesine başvuru içeren statik Current özellik.

Ayrıca, , ve gibi OnStartYaşam Döngüsü yöntemlerinin OnResume yanı sıra kalıcı gezinti olaylarını da kullanıma sunar. OnSleep

Seçtiğiniz şablona bağlı olarak, App sınıf iki yoldan biriyle tanımlanabilir:

  • C# veya
  • XAML & C#

XAML kullanarak bir Uygulama sınıfı oluşturmak için, aşağıdaki kod örneğinde gösterildiği gibi varsayılan Uygulama sınıfı bir XAML Uygulama sınıfı ve ilişkili arka planda kod ile değiştirilmelidir:

<Application xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="Photos.App">

</Application>

Aşağıdaki kod örneği, ilişkili arka planda kodu gösterir:

public partial class App : Application
{
    public App ()
    {
        InitializeComponent ();
        MainPage = new HomePage ();
    }
    ...
}

Özelliğini ayarlamanın MainPage yanı sıra, arka planda kodun da ilişkili XAML'yi yüklemek ve ayrıştırmak için yöntemini çağırması InitializeComponent gerekir.

MainPage özelliği

MainPage sınıfındaki Application özelliği uygulamanın kök sayfasını ayarlar.

Örneğin, kullanıcının oturum açıp açmadığına bağlı olarak farklı bir sayfa görüntülemek için sınıfınızda App mantık oluşturabilirsiniz.

MainPage özelliği oluşturucuda App ayarlanmalıdır,

public class App : Xamarin.Forms.Application
{
    public App ()
    {
        MainPage = new ContentPage { Title = "App Lifecycle Sample" }; // your page here
    }
}

Özellikler sözlüğü

Alt Application sınıfın, özellikle , OnSleepve OnResume yöntemlerinde OnStartkullanılmak üzere verileri depolamak için kullanılabilecek statik Properties bir sözlüğü vardır. Bu, kullanarak Application.Current.Propertieskodunuzun Xamarin.Forms herhangi bir yerinden erişilebilir.

Properties Sözlük bir string anahtar kullanır ve bir object değer depolar.

Örneğin, kodunuzun herhangi bir yerinde (bir öğe seçildiğinde, sayfanın OnDisappearing yönteminde veya yöntemindeOnSleep) kalıcı "id" bir özellik ayarlayabilirsiniz:

Application.Current.Properties ["id"] = someClass.ID;

OnStart Veya OnResume yöntemlerinde bu değeri kullanarak kullanıcının deneyimini bir şekilde yeniden oluşturabilirsiniz. Properties Sözlük depolarobject, bu nedenle kullanmadan önce değerini atamanız gerekir.

if (Application.Current.Properties.ContainsKey("id"))
{
    var id = Application.Current.Properties ["id"] as int;
    // do something with id
}

Beklenmeyen hataları önlemek için anahtara erişmeden önce anahtarın varlığını her zaman denetleyin.

Not

Properties sözlüğü yalnızca ilkel türleri depolama için seri hale getirebilir. Diğer türleri (örneğin List<string>) depolama girişimi sessizce başarısız olabilir.

Kalıcılık

Properties Sözlük cihaza otomatik olarak kaydedilir. Sözlüğe eklenen veriler, uygulama arka planda döndürdüğünde veya yeniden başlatıldıktan sonra bile kullanılabilir.

Xamarin.Forms1.4, sözlüğü proaktif olarak kalıcı hale Properties getirmek için çağrılabilen - SavePropertiesAsync() sınıfında ek bir yöntem Application kullanıma sunulmuştur. Bu, önemli güncelleştirmelerden sonra kilitlenme veya işletim sistemi tarafından öldürülme nedeniyle seri hale getirilmeme riskini almak yerine özellikleri kaydetmenize olanak sağlamaktır.

Sözlüğü kullanmaya Properties yönelik başvuruları Kitapla Xamarin.Forms Mobil Uygulama Oluşturma (bkz. bölüm 6, 15 ve 20) ve ilişkili örneklerde bulabilirsiniz.

Uygulama Sınıfı

Başvuru için aşağıda eksiksiz Application bir sınıf uygulaması gösterilmiştir:

public class App : Xamarin.Forms.Application
{
    public App ()
    {
        MainPage = new ContentPage { Title = "App Lifecycle Sample" }; // your page here
    }

    protected override void OnStart()
    {
        // Handle when your app starts
        Debug.WriteLine ("OnStart");
    }

    protected override void OnSleep()
    {
        // Handle when your app sleeps
        Debug.WriteLine ("OnSleep");
    }

    protected override void OnResume()
    {
        // Handle when your app resumes
        Debug.WriteLine ("OnResume");
    }
}

Bu sınıf daha sonra platforma özgü her projede örneği oluşturulur ve öğesinin LoadApplication yüklendiği MainPage ve kullanıcıya görüntülendiği yönteme geçirilir. Her platformun kodu aşağıdaki bölümlerde gösterilmiştir. En son Xamarin.Forms çözüm şablonları zaten uygulamanız için önceden yapılandırılmış tüm bu kodu içerir.

iOS projesi

iOS AppDelegate sınıfı öğesinden FormsApplicationDelegatedevralınır. Şu şekilde olmalıdır:

  • Sınıfının bir örneğiyle çağrısıLoadApplication.App

  • Her zaman değerini döndürür base.FinishedLaunching (app, options);.

[Register ("AppDelegate")]
public partial class AppDelegate :
    global::Xamarin.Forms.Platform.iOS.FormsApplicationDelegate // superclass new in 1.3
{
    public override bool FinishedLaunching (UIApplication app, NSDictionary options)
    {
        global::Xamarin.Forms.Forms.Init ();

        LoadApplication (new App ());  // method is new in 1.3

        return base.FinishedLaunching (app, options);
    }
}

Android projesi

Android MainActivity öğesinden FormsAppCompatActivitydevralınır. geçersiz kılmada OnCreate LoadApplication yöntemi sınıfının bir örneğiyle çağrılır App .

[Activity (Label = "App Lifecycle Sample", Icon = "@drawable/icon", Theme = "@style/MainTheme", MainLauncher = true,
    ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)]
public class MainActivity : FormsAppCompatActivity
{
    protected override void OnCreate (Bundle bundle)
    {
        base.OnCreate (bundle);

        global::Xamarin.Forms.Forms.Init (this, bundle);

        LoadApplication (new App ()); // method is new in 1.3
    }
}

Windows 10 için Evrensel Windows projesi (UWP)

UWP projesindeki ana sayfa öğesinden WindowsPagedevralmalıdır:

<forms:WindowsPage
   ...
   xmlns:forms="using:Xamarin.Forms.Platform.UWP"
   ...>
</forms:WindowsPage>

Derlemenin arkasındaki C# kodu, örneğinizi Xamarin.FormsAppoluşturmak için çağrısı LoadApplication yapmalıdır. UWP uygulamalarının da ile ilişkili Xamarin.Formsolmayan kendi App sınıfı olduğundan, bunu niteleyen App uygulama ad alanını açıkça kullanmanın iyi bir uygulama olduğunu unutmayın.

public sealed partial class MainPage
{
    public MainPage()
    {
        InitializeComponent();

        LoadApplication(new YOUR_NAMESPACE.App());
    }
 }

Forms.Init() UWP projesindeki App.xaml.cs çağrılmalıdır.

Daha fazla bilgi için bkz. UWP'yi hedeflemeyen mevcut Xamarin.Forms bir çözüme UWP projesi ekleme adımlarını içeren Windows Projelerini Ayarlama.

Channel 9 ve YouTube'da daha fazla Xamarin videosu bulun.