مشخصات مقاله
اولین مراحل پیش نمایش Windows برای Xamarin Forms
کلیه حقوق مادی و معنوی این مقاله متعلق به آموزشگاه تحلیل داده می باشد و هر گونه استفاده غیر قانونی از آن پیگرد قانونی دارد.
اولین مراحل پیش نمایش Windows برای Xamarin Forms
چندی پیش، James Montemagno به همراه Miguel de Icaza و Scott Hanselman در کنفرانس DotNetConf 2015، یک نسخه پیش نمایش از Xamarin Formها ارائه کردند که قابلیت پشتیبانی از پروژه های Windows Store و Windows Phone را داشت.
از مدت ها قبل برنامه نویسان منتظر پشتیبانی از پروژه های Windows XAML و جامع در Xamarin.Formها بودند. تا به امروز Xamarin.Formها فقط قادر به پشتیبانی از پروژه های Windows Phone 8.0 Silverlight بودند و نمی توانستند از سناریوی دیگری استفاده کنند.
این نسخه فقط در حالت پیش نمایش است. اما می توانید با آن کار کنید و نگاهی به آنچه در آینده عرضه خواهد شد داشته باشید.
آماده سازی یک Xamarin.Forms solutionجدید
برای شروع کار با این پیش نمایش، قبل از هر چیز باید با استفاده از قالبهای موجود در Visual Studio، یک پروژه Xamarin.Forms جدید ایجاد کنید:
پس از ساخت پروژه، Xamarin.Forms NuGet packages مورد استفاده در پروژه را بروزرسانی کنید و مطمئن شوید نسخه مورد استفاده در تمام پروژه های موجود در Solution یکسان هستند. برای انجام اینکار بر روی Solution در Solution Explorer راست کلیک کرده و گزینه Manage NuGet Packages for solution را انتخاب کنید. کانال را از Stable only به Include prerelease تغییر دهید تا بتوانید جدیدترین نسخه ها را مشاهده کنید. در بخش Updates، Updateهای ممکن برای Xamarin.Forms و Xamarin Support Library را مشاهده می کنید. بر روی دکمه Update All کلیک کنید:
حالا می توانید قابلیت پشتیبانی از پروژه های Windows Universal را به پروژه خود اضافه کنید. اول باید یک پروژه Windows Universal جدید به Solution خود اضافه کنید. اگر نیازی به پشتیبانی از Windows Phone 8.0 ندارید، می توانید پروژه Windows Phone 8 را که به همراه قالب Xamarin.Forms ایجاد شده است را حذف کنید.
در این مرحله باید Xamarin.Forms NuGet را به پروژه Windows Universal جدید اضافه کنید. مانند قبل، بر روی Solution راست کلیک کرده و NuGet manager را باز کنید. گزینه Online را از قسمت سمت چپ انتخاب کنید و مطمئن شوید کانال Include prerelease انتخاب شده باشد. مانند شکل زیر عبارت Xamarin.forms.windows را جستجو کنید:
پس از کلیک بر روی install، از شما پرسیده خواهد شد که می خواهید این Package را بر روی کدام پروژه ها نصب شود. کافیست بر روی دکمه OK کلیک کنید تا نصب آغاز شود.
تا اینجا کتابخانه های لازم در پروژه Universal بوجود آمده و می توانند بوسیله Xamarin.Formها پشتیبانی شوند. اکنون باید با استفاده از کد مشترک (shared code) و viewها، یک ارجاع به پروژه Universal برای کتابخانه کلاس Xamarin.Forms اضافه کنید. مشکل اینجاست که Xamarin.Forms ای که به صورت پیش فرض PCL را ایجاد کرده است، Windows Phone 8.1 یا Windows Store پشتیبانی نمی کند:
برای رفع این مشکل، به خصوصیات (properties) پروژه PCL مراجعه کرده و فریم ورک های مورد نظر را ویرایش کنید. در صورتی که نیاز ی به پشتیبانی از Windows Phone Silverlight 8 نداشته باشید، می توانید آن را از حالت انتخاب خارج کرده و پشتیبانی از Windows Phone 8.1 و Windows 8.1 را اضافه کنید:
پس از انجام این کار، Visual Studio پروژه را مجدداً با فریم ورک های جدید، بارگذاری می کند. حالا می توانید در هر زیر پروژه Universal (universal sub project) یک ارجاع به این پروژه بدهید.
فقط چند مرحله دیگر باقی مانده است. برای ادامه باید پروژه های Univarsal را مقداردهی اولیه (initialize) کنید و برنامه Xamarin.Forms را بارگذاری کنید.
شروع Xamarin.Forms در پروژه universal
باید در متد OnLaunched ، در فایل App.xaml.cs، کدهای زیر را اضافه کنید. بنابراین وقتی برنامه شروع به کار می کند، موتور Xamarin.Forms را اندازی می شود.
protected override void OnLaunched(LaunchActivatedEventArgs e)
{
Frame rootFrame = Window.Current.Content as Frame;
if (rootFrame == null)
{
rootFrame = new Frame();
rootFrame.CacheSize = 1;
//Initialize Xamarin.Forms
global::Xamarin.Forms.Forms.Init(e);
Window.Current.Content = rootFrame;
}
}
سپس در صفحه اصلی (MainPage) پروژه Windows Store، باید نوع پایه را از Page به Xamarin.Forms WindowsPage تغییر دهید:
<forms:WindowsPage
x:Class="XamarinForWinStore.WinUniversal.MainPage"
xmlns:forms="using:Xamarin.Forms.Platform.WinRT" >
forms:WindowsPage>
در کد های Code Behind ، به زبان ،C# مربوط به MainPage، باید نوع پایه کلاس را تغییر دهید (چون این کلاس، یک کلاس Partial است و در XAML تعریف شده است، لذا نیازی به تغییر در کد های Code Behind نیست) و کد زیر را برای بارگذاری برنامه Xamarin اضافه کنید:
public sealed partial class MainPage
{
public MainPage()
{
this.InitializeComponent();
this.NavigationCacheMode = NavigationCacheMode.Required;
LoadApplication(new XamarinForWinStore.App());
}
}
این فرایند را در پروژه Windows Phone نیز تکرار می کنیم. اما اینبار به جای WindowsPage از WindowsPhonePage استفاده خواهیم کرد.
کمی کد App.cs در پروژه PCL تغییر می دهیم تا از یک پس زمینه متفاوت و فونت بزرگتر ی استفاده کند:
public App()
{
// The root page of your application
MainPage = new ContentPage
{
BackgroundColor = Color.FromRgba(0.3, 0.3, 0.5, 1),
Content = new StackLayout
{
VerticalOptions = LayoutOptions.Center,
Children = {
new Label
{
XAlign = TextAlignment.Center,
Text = "Welcome to Xamarin Forms! on WinRT",
}
}
};
}
پروژه Windows Store را به عنوان پروژه آغازکننده (Startup Project) Solution انتخاب کنید و دکمه F5 را فشار دهید.
با این نسخه پیش نمایش یک گام بزرگ به سمت جلو برداشته شده است و به ما اجازه کار کردن با Xamarin.Forms در پلتفرم های جدید را می دهد. اما خیلی تا ارائه نسخه نهایی مانده است. برخی از امکاناتی که در این نسخه وجود ندارند عبارتند از:
- Mapها (نقشه ها)
- GridView
- Controlها: برخی کنترل ها یک رندر کننده اختصاصی () برای Windows XAML ندارند.
- Resources (منابع)