اما آیا یك برنامهنویس میتواند الزاما یك طراح باشد یا برعكس؟
جواب این پرسش خیر است. حال شما به عنوان برنامهنویس آیا این توانایی را دارید كه همان چیزی را كه طراحان به شما دادهاند در سیستم خود پیاده كنید؟ یا تكنولوژی مورد استفاده شما این قابلیت را به شما میدهد؟ باز هم جواب خیر است.
مایكروسافت بار دیگر دست به ابتكار زد و یك زبان نشانهگذاری و یك چارچوب كاری برای طراحی GUI و توسعه نسل جدید برنامهها معرفی كرد. این زبان نشانهگذاری كه از عبارت Extensible Application Markup Language گرفته شده است، به اختصار XAML (زامل) خوانده میشود. این زبان راهحلی برای تعامل هر چه بیشتر بین برنامهنویس و طراح است. این زبان بر مبنای XML بنا نهاده شده است و شباهتهایی به HTML دارد كه بعضیها از آن به Supper HTML یاد میكنند.
ایـن زبــــان نشانهگذاری به شما اجازه طراحی رابط كاربری را میدهد، مثل HTML و همین طور تعریفكردن Styleها برای دلخواهكردن اجزا كه كاركرد آن شبیبه به CSS است، برای مثال به كد زیر دقت كنید:
«Style Id = “MyButton”»
«/Style»
«Button Style={StaticResource MyButton} /»
اگر شما با HTML آشنا باشید فهم این كد برای شما آنچنان سخت نیست، اما این زبان چگونه بین طراح و برنامهنویس ارتباط برقرار میكند؟ قبل از این، طراح یكسری عكس و فونت و رنگ به برنامهنویسان میداد تا آنها GUI برنامه را بر اساس طرح ارائه شده و همین طور عكسها و منابعی ایجاد كنند كه طراح به آنها داده است. اما با ظهور XAML ابزارهایی برای طراحی و گرفتن خروجی بر مبنای XAML ایجاد شدند. یكی از این بستههای معروف Expression Studio است كه طراح، طرح خود را طراحی میكند و سپس به صورت یك فایل XAML خروجی میگیرد. این فایل XAML حاوی یكسری Resource است كه برنامهنویس میتواند در برنامه خود اضافه كند و آنها را مورد استفاده قرار دهد، دقیقا چیزی كه بر اساس HTML و CSS استفاده میشد یعنی طراح یك CSS به برنامهنویس میداد و برنامهنویس با استفاده از CSS ظاهر برنامه را طراحی میكرد، به همین دلیل اختلاف زیادی بین طرح طراح و خروجی حاصل نمیشد. اما در برنامههای ویندوزی این اختلاف به بالاترین سطح میرسید، چرا كه تمامی چارچوبهای كاری كه برای طراحی رابط كاربری ارائه میشد اینقدر منعطف نبود و نیاز به كدنویسی زیادی داشت تا به ایده طراح نزدیك شوید.
حال چگونه با XAML كد بنویسیم؟
كد زیر را در نظر بگیرید:
«Button
Name="MyButton"
Width="50"
Content="Click Me!" /»
كد بالا یك button تعریف میكند كه محتویات آن Click Me! است و طول آن ۵۰ پیكسل و نام آن MyButton است. همانطور كه میبینید كدهای XAML خیلی شبیه به HTML است.
اجزای XAML به ۵ جزء اصلی تقسیم میشود كه ۳ تای آنها را در این شماره معرفی میكنیم.
الف ) Root Element المانهایی هستند كه در بالاترین سطح قرار میگیرند. اگر شما یك پروژه WPF در Visual Studio بسازید، المان اصلی Window است.
المان اصلی میتواند شامل یك یا چند Content باشد. تمامی كنترلهایی كه از كلاس ConentControl به جای مانده، میتوانند به عنوان RootElement شناخته شوند. اما نكتهای كه وجود دارد این است كه نحوه نمایش آن است و این كه آیا آوردن آن به عنوان RootElement منطقی است یا خیر.
ب) Control Element : كنترلها خود به چند دسته تقسیم میشوند:
1ـ Simple Control (كنترلهای ساده): كنترلهایی هستند كه مستقیما از كلاس System.Windows.Control به ارث رسیدهاند و شامل ویژگیهای Content و Items و Header نیستند، جلوتر در مورد این ویژگیها توضیح خواهیم داد.
2ـ Contain Control (كنترلهای شامل شونده): كنترلهایی هستند كه فقط دارای صفت Content هستند و از كلاس ContentControl به جای ماندهاند.
3ـ Item Control: این كنترلها دارای یك سری Item درون خود هستند مثل ListBox و StackPanel و...
4ـ HeaderItem Control: كنترلهایی هستند كه علاوه بر داشتن یكسری Item میتوانند برای Itemها خصوصیات Header نیز تعریف كردم مثل Menu كه شامل یكسری MenuItem است.
5ـ HeaderContent Control: كنترلهایی هستند كه علاوه بر داشتن Header میتوانند شامل چند كنترل دیگر نیز باشند. مثل Expander، TabItem.
ج) Panel Elemen: بعضی وقتها نیاز است كنترلهایی كه در یك جهت قرار دارند در یك جا باشند و مثلا با یك تیتر مشخص شوند. بگذارید طور دیگری مساله را مطرح كنیم. شما میخواهید در فرم اصلی برنامه یك بخش Login درست كنید.
بهتر است اجزایی را كه مربوط به Login است در یك Panel بگذاریم و آن پنل را در جای مربوط به خود در روی فرم اصلی قرار دهیم. این كار چند مزیت دارد، فرم شما ساختاری زیباتر دارد و دسترسی به كنترلهای هر بخش سادهتر میشود، در شمارههای بعدی در مورد User Controlها صحبت میكنیم تا مزیت این كار بیشتر مشخص میشود. از Panelها میشود به Grid و StackPanel، WrapPanel، DockPanel ... نام برد.
اميربهاالدين سبطالشيخ