TOC

This article has been localized into Arabic by the community.

تطبيق WPF:

العمل مع الملف 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) على أحداث اخرى أو عرض شاشة الإفتتاحية . حيث كونك تمتلك تحكما كاملا يضع أمامك إمكانيات أكثر وأكثر . كما سنتطرق بعمق لكثير من هذه الإمكانيات في المقال التالي لهذه الدورة .