This article is currently in the process of being translated into Hebrew (~98% done).
פרמטרי שורת-פקודה עם WPF
מאפייני שורת פקודה הינם דרך בה ניתן להעביר פרמטרים לתוכנית שלך, על מנת להשפיע עליה בדרך כלשהי. הדוגמה הנפוצה ביותר היא פתיחת קובץ מסויים, לדוגמה בעורך טקסט. תוכלו לנסות זאת בעצמכם עם פנקס הרשימות המובנה ב-Windows - בחרו "התחל"->"הפעלה" או הקשו על Windows + R, והקלדו notepad.exe ואת שם הקובץ שתרצו לערוך:
notepad.exe c:\Windows\win.ini
זה יפתח את פנקס הרשימות עם הקובץ win.ini (אתה עשוי להצטרך להתאים את הנתיב למערכת שלך). פנקס רשימות בודק את הפרמטרים שלו, ואז משתמש בהם - והיישום שלך יכול לעשות זאת גם!
מאפייני שורת-פקודה מועברים ליישום WPF שלך דרך האירוע Startup, אשר נרשמנו אליו במאמר על 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"
Startup="Application_Startup">
<Application.Resources></Application.Resources>
</Application>
כל מה שאנחנו צריכים לעשות זה להירשם לאירוע Startup, ולמחוק את התכונה StartupUri. המטפל באירוע ממומש ב-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, אשר הינו מערך של מחרוזות. פרמטרי שורת הפקודה הינם מופרדים ברווחים, מלבד מקרה של פרמטר מוקף בגרשיים.
בדיקת פרמטרי שורת-פקודה
אם הרצת את הדוגמה הקודמת, ראית ששום דבר לא קרה, היות שלא צוינו פרמטרי שורת-פקודה. Visual Studio מאפשר לנו לעשות זאת ליישום שלנו בקלות. מתפריט Project, בחר "[Project name] properties", ואז לך לכרטיסייה Debug שם אתה יכול להגדיר פרמטרי שורת-פקודה. זה אמור להיראות כמו:
נסה להריץ את היישום וראה אותו מגיב לפרמטר שלך.
בתכל'ס, ההודעה הקודמת לא באמת שימושית. במקום זאת אתה עשוי לרצות להעביר את הפרמטר לבנאי (constructor) של MainWindow או לקרוא לשיטה ציבורית שלו, כמו:
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();
}
}
}
אפשרויות פרמטרי שורת-פקודה
בדוגמה זו בדקנו אם התקבל בדיוק פרמטר אחד ואם אכן כך, השתמשנו בשם הקובץ. בעולם האמיתי, אתה עשוי לרצות כמה וכמה ארגומנטים ואפילו להשתמש בהם כאופציות, לדוגמה הדלקת או כיבוי תכונה מסויימת. אתה עושה זאת באמצעות מעבר ע"י לולאה על הארגומנטים ועיבוד שלהם. אבל זה מחוץ לתחום מאמר זה.