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 OnStart
Yaş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 , OnSleep
ve OnResume
yöntemlerinde OnStart
kullanılmak üzere verileri depolamak için kullanılabilecek statik Properties
bir sözlüğü vardır. Bu, kullanarak Application.Current.Properties
kodunuzun 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 FormsApplicationDelegate
devralı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 FormsAppCompatActivity
devralı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 WindowsPage
devralmalıdır:
<forms:WindowsPage
...
xmlns:forms="using:Xamarin.Forms.Platform.UWP"
...>
</forms:WindowsPage>
Derlemenin arkasındaki C# kodu, örneğinizi Xamarin.FormsApp
oluş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.
İlgili video
Channel 9 ve YouTube'da daha fazla Xamarin videosu bulun.