This article is currently in the process of being translated into Arabic (~98% done).
مدخلات سطر الأوامر في WPF
مدخلات الأوامر الخطية ( Command-Line parameters) هي تقنية تسمح بتمرير متغيرات للتطبيق الذي نقوم بتشغيله للتأثير عليه بطريقة ما . المثال الشائع لذلك : عندما نقوم بفتح ملف ببرنامج ما ك : المفكرة (notepad) . يمكنك تجريب ذلك بنفسك على تطبيق المفكرة المدمج في أنظمة ويندوز , عن طريق تشغيله وتمرير مسار الملف الخطوات WindowsKey+R
notepad.exe c:\Windows\win.ini Or "notepad "PathToFile
هذا سيقوم بفتح المفكرة على الملف win.ini (ربما تحتاج لتعديل مسار الملف وفقا لإصدار نظام التشغيل عندك) . برنامج المفكرة يقوم ببساطة بالنظر للمدخلات ويقوم بإستخدامهم, كذلك يستطيع تطبيقكك عمل نفس الشيء
مدخلات الأوامر الخطية التي مررت لتطبيق ال WPF عن طريق حدث البداية (Startup Event) والذي اشتركنا فيه مقال شرح الملف App.xaml . سنقوم بعمل نفس الشيء هنا , ومن ثم سنستخدم القيمة الممرة لإستخدامها في التطبيق أولا الملف App.xaml.file
<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 ومن ثم توصيف (implement) هذا الحدث في الملف App.xaml.cs:
using System;
using System.Collections.Generic;
using System.Windows;
namespace WpfTutorialSamples
{
public partial class App : Application
{
private void Application_Startup(object sender, StartupEventArgs e)
{
MainWindow wnd = new MainWindow();
if(e.Args.Length == 1)
MessageBox.Show("Now opening file: \n\n" + e.Args[0]);
wnd.Show();
}
}
}
النوع StartupEventArgs هوا ما سنستخدمه هنا. حيث يمرر إلى حدث بداية التطبيق تحت اسم e. وهوا يمتلك خاصية تسمى Args وهي عبارة عن صف (ِArray) من السلاسل النصية (Strings). مدخلات سطر الأوامر لابد ان تفصل بمسافات إلا إذا كانت المسافة موجودة داخل علامتي التنصيص "---"
إختبار مدخلات سطر الأوامر
إذا قمت بتشغيل المثال السابق فلن يحدث أي شيء, لأننا لم نقم بتمرير أي متغير لسطر الاوامر . لحسن الحظ ف فيجوال ستوديوا يجعل الأمر سهلا لإختبار تطبيقك. من القائمة Project اختر "[Project name] properties" ومن ثم اختر Debug , حيث يمكنك تعريف متغيرات سطر الأوامر هناك. من المفترض ان يبدوا كالتالي
الان قم بتشغيل التطبيق وسترى استجابته للمدخلات التي أدخلتها
بالطبع الرسالة ليست مفيدة على الإطلاق . لكن ربما تريد ان تمررها للمشيد (constructor) للنافذة الرئيسية أو تنادي الدالة العمومية open بناء على تلك المتغيرات, كالتالي :
using System;
using System.Collections.Generic;
using System.Windows;
namespace WpfTutorialSamples
{
public partial class App : Application
{
private void Application_Startup(object sender, StartupEventArgs e)
{
MainWindow wnd = new MainWindow();
// The OpenFile() method is just an example of what you could do with the
// parameter. The method should be declared on your MainWindow class, where
// you could use a range of methods to process the passed file path
if(e.Args.Length == 1)
wnd.OpenFile(e.Args[0]);
wnd.Show();
}
}
}
إمكانيات سطر الأوامر
في هذا المثال, تحققنا بالتحديد من وجود متغير واحد واستخدمناه كاسم ملف . لكن في التطبيق الواقعي من الممكن تمرير متغيرات كثيرة لتحدد خيارات معينة كتشغيل ميزة معينة أو قفلها . وسنقوم بذلك عن طريق المرور على كل المتغيرات ومعالجتها . لكن هذا يخرج عن سياق هذا المقال.