וובמאסטר - תיכנות ובניית אתרים

מדריך WPF – הוספת חלונות חדשים

arikp ,‏ מכללת סלע‏ ‏/‏ 28 יולי, 2011
F+
F-

בכל הדוגמאות שלנו עד כה תמיד עבדנו על החלון הראשי. כמובן שבתוכנה אמיתית לרוב יש מספר רב של חלונות שנפתחים ונסגרים במהלך החיים של התוכנה.

כיצד להוסיף חלון חדש?

כדי להוסיף חלון חדש נלך בסביבת העבודה ל Solution Explorer, נלחץ עם הכפתור הימני על הפרויקט ונבחר Add, ואז New Item…

מדריך WPF – הוספת חלונות חדשים

 

כעת נבחר את סוג האלמנט להוספה, Window של WPF, ניתן שם למחלקה של החלון החדש, SecondWindow ונלחץ על כפתור Add:

מדריך WPF – הוספת חלונות חדשים

כעת קיבלנו קובץ XAML חדש שמאפשר לנו לקבוע ולעצב את החלון החדש לפי אותם כללים שעבדנו איתם עד כה. בנוסף קיבלנו גם קובץ code-behind חדש שיכיל את קוד המחלקה של החלון החדש.

מדריך WPF – הוספת חלונות חדשים

 

כיצד לפתוח חלון?

כעת, לאחר שהוספנו חלון חדש נרצה לראות כיצד לפתוח אותו.
פתיחת חלון נעשית באמצעות קוד #C ע"י יצירת מופע חדש של המחלקה של החלון וקריאה לפונקציה Show, להלן דוגמא:

SecondWindow secondWindow = new SecondWindow();
secondWindow.Show();

והתוצאה, שני חלונות פתוחים:

מדריך WPF – הוספת חלונות חדשים

 

נעיר כי החלון החדש שנפתח אינו חוסם את המשתמש לגשת לחלון הראשי. אם נרצה שהחלון החדש יחסום את הגישה לחלון הראשי כל עוד הוא פתוח יש להשתמש בפונקציה 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();
    }
  }
}

arikp, מכללת סלע

אריק פוזננסקי הוא יועץ בכיר ומרצה בסלע. הוא השלים שני תארי B.Sc. במתמטיקה ומדעי המחשב בהצטיינות יתרה בטכניון. לאריק ידע נרחב בטכנולוגיות מיקרוסופט, כולל .NET עם C#, WPF, Silverlight, WinForms, Interop, COM/ATL, C++ Win32 ו reverse engineering.
תגיות: מדריך‏  /  פיתוח‏  /  צד לקוח‏  /  WPF‏  /  .net‏  

תגובות בפייסבוק

תגובות למאמר



עוד במדריך

תגיות פופולאריות

X
הצטרף לעמוד שלנו בפייסבוק להישאר מעודכן!
וובמאסטר © כל הזכויות שמורות