This article has been localized into Arabic by the community.
العمل مع الملف App.xaml
الملف App.xaml هو نقطة بداية التطبيق : حيث يقوم فيجوال ستوديوا تلقائيا بإنشاء هذا الملف عندما تقوم بإنشاء تطبيق جديد , كما ويدمج مع هذا الملف ملف ءاخر للكود الخلفي (Code-behind) يسمى App.xaml.cs . وهوا يعمل تماما بنفس مبدا عمل النوافذ : حيث يكون كلا الملفين عبارة عن كلاس جزئي (Partial Classes) يعملان معا للسماح لك بالعمل مع كلا الإطارين : 1- إطار الواجهة : XAML 2- الكود الخلفي : Code-behind
الملف App.xaml.cs : يقوم بتمديد وظائف الكلاس الرئيسي للتطبيق : حيث يعتبر الكلاس المركزي المتحكم في التطبيق , حيث سيقوم تطبيق ال WPF بالتوجه تلقائيا لهذا الملف ليحصل عل تعليمات بداية المشروع وليقرر أي نافذة أو صفحة سيبدأها من هناك . كما أنه المكان المثالي للتنصت (Subscribe) على الأحداث (Events) الهامة الخاصة بالتطبيق : كحدث بداية التطبيق (Application Start Event) وحدث إلتقاط الإثتثنائات الخارجة عن السيطرة (unhandled exceptions) والكثير من ذلك . سنناقش ذلك في دروس قادمة
أحد أهم الميزات الرئيسية للملف App.xaml هوا تعريف المصادر العامة (global resources) والتي قد تستخدم خلال التطبيق كاملا : أي من جميع مكونات التطبيق كنسخة من التنسيق العمومي (global style) . سنناقش هذا بالتفصيل فيما بعد
هيكلية الملف App.xaml
عند إنشاء تطبيق جديد سيتم توليد الملف App.xaml تلقائيا . والذي سيبدوا بالشكل التالي
<Application x:Class="WpfTutorialSamples.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
StartupUri="MainWindow.xaml">
<Application.Resources>
</Application.Resources>
</Application>
أهم عنصر للملاحظة هنا هوا الخاصية (Property) المسماة StartupUri . وهي في الواقع الجزأ المسؤل عن إخبار التطبيق أي نافذة أو صفحة سيقوم ببدأها عن بداية عرض التطبيق . في حالتنا هذه الملف MainWindow.xaml سيتم بدأه , لكن إذا أردنا فتح نافذه أخرى بإمكاننا تغيره بكل بساطة
في بعض المواقف سنحتاج لتحكم أكثر في طريقة وتوقيت عرض نافذة البداية . في هذه الحالة نقوم بحذف الخاصية StartupUri وقيمتها : ثم نقوم بعمل ذلك في الكود الخلفي : كالمثال في التالي
هيكلية الملف App.xaml.cs
الملف App.xaml.cs سيبدوا عادة بالشكل التالي عند إنشاء مشروع جديد
using System;
using System.Collections.Generic;
using System.Windows;
namespace WpfTutorialSamples
{
public partial class App : Application
{
}
}
سنرى الان كيف يقوم هذا الكلاس بتمديد خصائص كلاس المشروع , سامحا لنا بأداء المهام على مستوى التطبيق ككل . كنموذج لذلك : بإمكاننا الإستماع (Subscribe) لحدث البداية (Startup Event) , حيث نقوم يدويا بإنشاء نافذة البداية الجديدة
وهذا مثال على ذلك :
<Application x:Class="WpfTutorialSamples.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Startup="Application_Startup">
<Application.Resources></Application.Resources>
</Application>
لاحظ كيف قمنا باستبدال الخاصية StartupUri بالإشتراك (subscription) في حذث البداية (Startup Event) للعلم : الإشتراك في الأحداث عن طريق XAML سيتم توضيحه في فصل ءاخر . في الكود الخلفي , بإمكاننا استخدام هذا الحدث كالتالي
using System;
using System.Collections.Generic;
using System.Windows;
namespace WpfTutorialSamples
{
public partial class App : Application
{
private void Application_Startup(object sender, StartupEventArgs e)
{
// Create the startup window
MainWindow wnd = new MainWindow();
// Do stuff here, e.g. to the window
wnd.Title = "Something else";
// Show the window
wnd.Show();
}
}
}
الشيء الجميل في هذا المثال, مقارنة باستخدام الخاصية (StartupUri), اننا تلاعبنا بنافذة البداية قبل عرضها, حيث قمنا تغيير عنوانها, رغم انه غير مفيد كثيرا , ولاكن يمكننا أيضا الاشتراك (استماع + تنصت Subscribe) على أحداث اخرى أو عرض شاشة الإفتتاحية . حيث كونك تمتلك تحكما كاملا يضع أمامك إمكانيات أكثر وأكثر . كما سنتطرق بعمق لكثير من هذه الإمكانيات في المقال التالي لهذه الدورة .