עזרה ב- WPF

zahalul

New member
עזרה ב- WPF

שלום,

עלי לפתח אפליקציית Desktop ב- WPF. ה- Main windows מחולק ל- TABs וכל TAB נראה בערך כמו בתמונה המצורפת.

כאשר מכווצים את Main windows, ה- controls לא אמורים להתכווץ אלא אמור להופיע hor,ver scroll

אני מבולבל מכל ה- Panels שיש ב- WPF. איזה הכי מתאים לי ?
האם תוכלו לשלוח קוד XAML ?

בנוסף אני רוצה שתהיה אפשרות שכל group box (ככה זה היום אצלי ב- winforms) יהיה "פאנל" שניתן לגרור אותו מחוץ ל- Main windows , למשל לפינת המסך.

תודה מראש,
צהלול.

 

ziv1f

New member
הפאנל המתאים למבנה מסך כזה הוא כנראה Grid

ואיני נוהג לשלוח קוד, מאחר שהדבר מעודד הישענות על פני למידה, ומאחר שמרגע שאני שולח קוד למישהו, אני הופך למתחזק הקוד שלו, ולכן אשמח לעזור אבל איני שולח קוד, ובוודאי שלא קוד ברמה הכי בסיסית של Layout של מסך

אם אינך מכיר את MVVM עדיין, זה הזמן ללמוד, כי אחרי שתתחיל לעבוד על הקוד זה יהיה חבל מאד כשתבין שאת כל ה-code behind שכתבת (כנראה) אתה תצטרך למחוק.

מבחינת כמו הפאנלים, אני לא בטוח שהבנתי את האמירה שלך "אני מבולבל מכל ה- Panels שיש ב- WPF". מספר לא גדול, וההבדלים ביניהם ברורים לגמרי, ולכן אם יש לך ספק בין שניים או שלושה (או יותר) - אנא שאל ואשמח לענות. אני מכיר פחות מעשרה סוגי פאנלים, והם מספיקים לי לכל מה שאי-פעם נדרשתי אליו, למעט לקוח תובעני במיוחד שהיו לו דרישות חריגות במיוחד ונדרשתי לכתוב בעצמי פאנל, וגם אז המדובר היה בערך ב-100 שורות קוד, או משהו בסדר הגודל הזה. זו אחת הסיבות שאני אוהב את WPF - הפשטות לעשות דברים מורכבים.

החלופה שאני מציע לפקד GroupBox ב-WinForms (אם תרצה לשמור על מראה המסך המיושן הזה) הוא HeaderedContetControl, שקיסטמת (בערך 10 דקות נוספות) את ה-ControlTemplate שלו. לנושא הגרירה והפיכה של פאנל לחלון נפרד, יש לזה מתודולוגיות כמו ב-WinForms של גרירה והשלכה, אבל אני לא בטוח שהצלחתי להבין מה קורה למקום שאותו GroupBox תפס ברגע שגוררים אותו החוצה מהחלון הראשי.

אני יודע שאני מדבר מתוך שנים רבות של עבודה בסביבה הזו, וייקח לך זמן ללמוד את כל מה שאני כיום יודע (כי גם לי זה לקח הרבה זמן), אבל למשימות ספציפיות אפשר ללמוד דברים ספציפיים, וזה לא לוקח הרבה זמן, וכל מה שתלמד הוא שלך לעד.

בהצלחה,
זיו
 

zahalul

New member
אין כוונה להשתמש ב- GroupBox. אלא לחלק את ה- TAB לפאנלים

שלום,
תודה על תשובתך המפורטת.
במקום GroupBox שבו השתמשתי ב- Winforms אני רוצה לחלק כל TAB לפאנלים (כנראה מסוג GRID).
האם ניתן להגיע למצב בו אני לוקח פאנל מסוים בתוך TAB וגורר אותו מחוץ ל- Main window ?
כמו כן, ברמת ה- Main windows אני רוצה לבצע Save workspace ולשמור את המיקום של כל הפאנלים בקובץ כלשהו.

תודה מראש,
צהלול.
 

ziv1f

New member
אני לא בטוח שהבנתי את הכל, אבל

קודם כל, אם אני מבין נכון, אתה רוצה במקום מסך אחד שיש בו כמה GroupBoxes, לעשות לכל גרופ-בוקס טאב משלו, זה אפשרי כמובן, יש טאב קונטרול ואלה יהיו האייטמים שלו. אם זה המצב אז שכח כל מה שאמרתי על Layout כי אין פה ענייני Layout כלל

דבר שני, אם אני מבין נכון את מה שהתכוונת אליו, אז המדובר הוא בתצורת UI דומה למה שיש בויז'ואל סטודיו, טאבים שניתן לשלוף אותם, וגם להחזיר אותם אח"כ למקום שלהם, או לעגון אותם למקום אחר במסך. אם זה אכן המצב, אז יש ספרייה נהדרת בקוד פתוח שעושה בדיוק את זה, היא נקראת AvalonDock 2 והיא הספרייה שבעזרתה בנו את ממשק המשתמש של MonoDevelop שהוא סביבת הפיתוח בקוד פתוח למונו (שזה סביבת הדוט-נט בקוד פתוח מולטי-פלתפורם). יש גם לחברות הגדולות שיוצרות ספריות פקדים (כמו טלריק למשל שאני מאד אוהב את המוצרים שלהם) רכיבים דומים, לרוב טובים יותר אבל גם עולים (יחסית) הרבה כסף. היתרון אצלם הוא שאם אתה בונה אפליקציה עם המון סוגים של פקדים אז יש להם מגוון מאד רחב, וגם תמיכה מובנית ב-Themes וגם כמה Themes מן המוכן, וגם אתרי תמיכה מאד עשירים ומגוונים.

גם היכולת לשמור את המיקומים והמצבים של הפאנלים הצפים קיימת ב-AvalonDock וכמובן גם במוצרים בתשלום, לא מורכב וכמובן יש דוגמאות.

דבר נוסף שלא הבנתי הוא המונח Main Windows - יש לך יותר מחלון ראשי אחד?

שבוע נפלא,
זיו
 
WebMaster

באתר WebMaster יש מדריך טוב בעברית, שיעזור לך [גם] בסוגי הפנאלים של WPF.
 
למעלה