מדריך WPF – הוספת חלונות חדשים
בכל הדוגמאות שלנו עד כה תמיד עבדנו על החלון הראשי. כמובן שבתוכנה אמיתית לרוב יש מספר רב של חלונות שנפתחים ונסגרים במהלך החיים של התוכנה.
כיצד להוסיף חלון חדש?
כדי להוסיף חלון חדש נלך בסביבת העבודה ל Solution Explorer, נלחץ עם הכפתור הימני על הפרויקט ונבחר Add, ואז New Item…
כעת נבחר את סוג האלמנט להוספה, Window של WPF, ניתן שם למחלקה של החלון החדש, SecondWindow ונלחץ על כפתור Add:
כעת קיבלנו קובץ XAML חדש שמאפשר לנו לקבוע ולעצב את החלון החדש לפי אותם כללים שעבדנו איתם עד כה. בנוסף קיבלנו גם קובץ code-behind חדש שיכיל את קוד המחלקה של החלון החדש.
כיצד לפתוח חלון?
כעת, לאחר שהוספנו חלון חדש נרצה לראות כיצד לפתוח אותו.
פתיחת חלון נעשית באמצעות קוד #C ע"י יצירת מופע חדש של המחלקה של החלון וקריאה לפונקציה Show, להלן דוגמא:
SecondWindow secondWindow = new SecondWindow();
secondWindow.Show();
והתוצאה, שני חלונות פתוחים:
נעיר כי החלון החדש שנפתח אינו חוסם את המשתמש לגשת לחלון הראשי. אם נרצה שהחלון החדש יחסום את הגישה לחלון הראשי כל עוד הוא פתוח יש להשתמש בפונקציה ShowDialog לפתיחת החלון:
SecondWindow secondWindow = new SecondWindow();
secondWindow.ShowDialog();
כיצד להעביר מידע לחלון?
הרבה פעמים עולה הצורך להעביר מידע לחלון החדש שנפתח. כמובן שיש הרבה דרכים לפתור בעיה זו (כמו כל בעיה בתוכנה), אנו נתאר פתרון מקובל אחד.
כדי להעביר מידע לחלון החדש ניתן ליצור למחלקה תכונות חדשות שיכילו את המידע המבוקש, בנוסף נצטרך לאתחל תכונות אלו במידע מהחלון הקודם לפני שנציג את החלון החדש.
לדוגמא, קטע הקוד הבא מראה כיצד ניתן להוסיף תכונה לחלון החדש וכיצד להציב בה ערך מתוך החלון הקודם.
להלן הקוד שמוסיף תכונה לחלון החדש:
using System.Windows;
namespace WindowsDemo
{
/// <summary>
/// Interaction logic for SecondWindow.xaml
/// </summary>
public partial class SecondWindow : Window
{
public SecondWindow()
{
InitializeComponent();
}
public string MyData { get; set; }
}
}
וכן הקוד שמציב בתכונה זו ערכים מתוך החלון הקודם:
SecondWindow secondWindow = new SecondWindow();
secondWindow.MyData = "my data goes here";
secondWindow.ShowDialog();
נעיר כי ניתן גם להשתמש בתכונה DataContext כדי לקבוע את מקור הנתונים ל Binding המופיעים בחלון החדש, כפי שלמדנו בפרקים המדברים על Data Binding.
כיצד לסגור חלון?
אז ראינו איך להוסיף חלון חדש ואיך להפעיל אותו. נשאלת השאלה, כיצד נוכל לסגור את החלון שפתחנו?
ראשית נעיר כי לא תמיד נצטרך לממש זאת שכן המשתמש יכול לסגור את החלון פשוט ע"י לחיצה על כפתור הסגירה. אבל אם בכל זאת נרצה לכתוב קוד שסוגר את החלון נוכל לעשות זאת ע"י שימוש בפונקציה Close באופן הבא:
using System.Windows;
namespace WindowsDemo
{
/// <summary>
/// Interaction logic for SecondWindow.xaml
/// </summary>
public partial class SecondWindow : Window
{
public SecondWindow()
{
InitializeComponent();
}
public string MyData { get; set; }
private void closeButton_Click(object sender, RoutedEventArgs e)
{
this.Close();
}
}
}
תגובות בפייסבוק