WPF Window VS. UserControl

9 בFebruary 2014

תגיות: , , ,
תגובה אחת
לא מעט הבדלים בין User Control ובין חלון אני אנסה הפוסט זה לסקור חלק נכבד מהם ואת הכי חשובים בעיניי.
שימוש חוזר – טריוויאלי עבור UserControl ומן הסתם חלק מהסיבה המרכזית למי שתכנן אותו.. לא ממש הגיוני בשימוש בחלון , ניתן אומנם להרים אינסטנס חדש לפי בקשה אבל זה לא עונה על הקריטריון של שימוש חוזר במחזור חיי התכנית.
אופן השימוש – UserControl ניתן להזריק אותו כתכולה לאזור בUI דרך ContentControl . ולמעשה לשתול אותו בכל מקום חלון ממש לא לט ניתן להכיל חלון בתוך קונטרול או חלון אחר. ניתן אמנם להעביר פרמטרים והודעות אך לא מעבר לזה. אם נסגור אחד השני יישאר באוויר.
יש לחלון את כל התשתית של חלונות , מזעור סגירה וכו’ פתיחה Title ואין סוף מאפיינים נוספים ,
חלון מהווה תשתית לדיאלוגים שונים מודליים ורגילים ויכול להופיע בכל מקום מעל האפליקציה. Show , ShowDialog חלון בנוסף על היותו עצמאי ויותר מזה אני חייב לפחות חלון אחד מרכזי עבור האפליקציה לפחות במע’ הפעלה חלונות…
חלון מתופעל על ידי מערכת ההפעלה ומגיע בסופו של גבר מספריה של WIN32 וUserControl הוא קונטרול שנבנה בספריית WPF לטוב ולרע.
אני אחראי אליו אפליקטיבית
יש הטוענים שUSerControl נועד למעשה כדי ליצור customControl אני לא אוהב את זה כ”כ ומעדיף לכתוב פקדים שיורשים מ Control אבל זה נושא אחר,
ניווט- בעבר לפני שSilverlight נקבר הוא לקח חלק בדיון הזה ועדיין ניווט בתוך אפליקציה בסגנון Single Page Application נשתמש כמובן בUserControl כי אין דרך הגיונית להכיל חלונות בתוך חלונות ולנווט ביניהם.
וUserControls עושים את זה בדקות ספורות.
גישה לחלונות דרך מערך כל החלונות באפליקציה – פשוט וקל נניח בדרך הבאה: var windows = Application.Current.Windows;
לעומת גישה לUserControls דרך כלי debug ומעבר על העץ הלוגי של WPF
פוקוס וניהול – מאוד פשוט בחלונות ומאוד מורכב ב UserControl כל האירועים שיש לחלון ומאפיינים כמו Icon שעוברים ישירות למערכת ההפעלה או מאפיינים כמו IsActive לא קיימים בUSerControl ומימוש שלהם דורש זמן ולא תמיד אפשרי .
הוסף תגובה
facebook linkedin twitter email

Leave a Reply

Your email address will not be published. Required fields are marked *

תגובה אחת

  1. דוד12 בFebruary 2014 ב 15:00

    נהנתי לקרוא.
    תוכל לשולח אותי ללינק כל שהוא אודות מה שכתבת:
    “ניווט- בעבר לפני שSilverlight נקבר הוא לקח חלק בדיון הזה ועדיין ניווט בתוך אפליקציה בסגנון Single Page Application נשתמש כמובן בUserControl כי אין דרך הגיונית להכיל חלונות בתוך חלונות ולנווט ביניהם.
    וUserControls עושים את זה בדקות ספורות.”
    אני מחפש הרחבה למילים האחרונות, תודה מראש!

    Reply