آموزش کلاس App در زامارین فرم
کلاس پایه App دارای ویژگی های زیر است :
- خصوصیت
MainPage
که صفحه اصلی برنامه را مشخص می کند - خصوصیت
ResourceDictionary
برای تعریف منابع در سطح برنامه به کار می رود. اموزش ResourceDictionary در این مقاله اماده شده است. - متد استاتیک
Current
برای ارجاع داده به یک شی از برنامه جاری . به عبارتی متدی شبه متدcontext.current
در asp.net - چهار متد چرخه حیات برنامه از جمله زمان استارت برنامه و زمان Sleep برنامه و زمان ادامه کار برنامه
بسته به اینکه چه الگویی را انتخاب کرده اید ، کلاس App را می توان به یکی از دو روش تعریف کرد:
C#
XAML & C#
در مثال زیر نحوه تعریف کلاس App با استفاده از XAML و همراه code-behind
نشان داده شده است
<Application xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="Photos.App">
</Application>
کد سی شارپ
public partial class App : Application
{
public App ()
{
InitializeComponent ();
MainPage = new NavigationPage(new MainPage());
}
...
}
در کد بالا علاوه بر تعریف MainPage
اولیه برنامه ، متد InitializeComponent
برای اجرای کامپوننت های توکار مورد نیاز برنامه زامارین فرم فراخوانی شده است
MainPage property
ویژگی MainPage
در کلاس App صفحه اصلی برنامه را تنظیم می کند. به عنوان مثال ، شما می توانید منطقی در کلاس App خود ایجاد کنید تا بسته به اینکه کاربر به سیستم وارد شده باشد یا خیر ، صفحه دیگری را نمایش دهد. ویژگی MainPage
باید در سازنده کلاس App تنظیم شود .
public class App : Xamarin.Forms.Application
{
public App ()
{
MainPage = new NavigationPage(new MainPage());// or Login page
}
}
Properties dictionary
زیر کلاس Application
دارای Properties dictionary استاتیک است که می تواند برای ذخیره داده ها به ویژه برای استفاده در روش های OnStart
، OnSleep
و OnResume
مورد استفاده قرار گیرد. با استفاده از Application.Current.Properties
از هرجای کد Xamarin.Forms می توانید به این مورد دسترسی پیدا کنید. دیکشنری Properties dictionary از یک کلید از نوع رشته استفاده می کند و یک مقدار شی را ذخیره می کند.
به عنوان مثال ، شما می توانید یک ویژگی "id"
را در هر کجا از کد خود تنظیم و مقدار دهی کنید (هنگام انتخاب یک مورد یا در روش OnDisappearing
یک صفحه یا در روش OnSleep
)
Application.Current.Properties["id"] = someClass.ID;
سپس در روشهای OnStart
یا OnResume
یا هر کجای نرم افزار می توانید مقدار تعریف شده را بازیابی کنید . Properties dictionary مقادیر را بصورت اشیا ذخیره می کند بنابراین لازم است قبل از استفاده در کد ، این مقادیر را به نوع مورد نیاز خودتون cast
کنید.
if (Application.Current.Properties.ContainsKey("id"))
{
var id = Application.Current.Properties["id"] as int;
// do something with id
}
همیشه قبل از دسترسی به کلید ، وجود آن را بررسی کنید تا از خطاهای غیر منتظره جلوگیری شود.
Properties dictionary فقط می تواند انواع اولیه را برای ذخیره سازی به صورت سریالی تنظیم کند. تلاش برای ذخیره انواع دیگر (مانند
List <string>
) منجر به خطا می شود .
ماندگاری (Persistence)
Properties dictionary به طور خودکار در دستگاه ذخیره می شود. داده های اضافه شده به Properties dictionary در صورت بازگشت برنامه از پس زمینه یا حتی پس از راه اندازی مجدد ، در دسترس خواهد بود.
کلاس Application
پیاده سازی کامل کلاس Application
در کد زیر نشان داده شده است
public class App : Xamarin.Forms.Application
{
public App ()
{
MainPage = new NavigationPage(new MainPage());// or Login page
}
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");
}
}
این کلاس در هر پلت فرم خاص (ios , android , uwp ) نمونه سازی شده و با استفاده از متد LoadApplication
که در آن MainPage
بارگذاری می شود و به کاربر نمایش داده می شود . کد هر پلت فرم در بخشهای زیر نشان داده شده است.
iOS
در ios کلاس AppDelegate
مشتق شده از کلاس FormsApplicationDelegate
می باشد که باید شرایط زیر را داشته باشد.
- فراخوانی کلاس
LoadApplication
همراه یک نمونه از کلاسApp
برای اجرای نرم افزار - برگشت متد
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
در Android کلاس MainActivity
مشتق شده از کلاس FormsApplicationDelegate
می باشد. همچنین override
متد OnCreate
باعث ایجاد یک نمونه از کلاس 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
}
}
UWP
صفحه اصلی در پروژه UWP باید از WindowsPage
به ارث بری کند .
<forms:WindowsPage
...
xmlns:forms="using:Xamarin.Forms.Platform.UWP"
...>
</forms:WindowsPage>
کد C#
باید متد LoadApplication
را فراخوانی شود تا نمونه ای از برنامه Xamarin.Forms شما ایجاد شود. توجه داشته باشید که روش صحیح این است که به صراحت از فضای نام برنامه استفاده کنید زیرا برنامه های UWP کلاس برنامه خاص خود را ندارند و به Xamarin.Forms ارتباطی ندارند.
public sealed partial class MainPage
{
public MainPage()
{
InitializeComponent();
LoadApplication(new your_name_space.App());
}
}
توجه داشته باشید که Forms.Init()
را باید از App.xaml.cs در پروژه UWP فراخوانی کنید.
افزودن نظر جدید
0 نظر ثبت شده است