markup extension ב wpf - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

markup extension ב wpf


bdoron

Recommended Posts

קראתי קצת על הרחבת תגיות, והבנתי אבל קצת בצורה מבולבלת, הייתי שמח אם תעשו לי קצת סדר בדברים

אז אני ארשום את זה בסעיפים שתוכלו לענות לי בתשובות לפי סעיפים :)

תודה מראש!!!

1. יש את הxaml parser שהוא בעצם מפענח את התגיות לצורה ויזואלית.

2. לכל תגית יש מאפיינים , תכונות שכל תכונה הערך המתקבל חייב להיות string ואם הxaml parseer נתקל בערך שהוא לא string הוא מחפש איזה ממיר (converter) שיקח את הערך המוצב ויהפוך אותו לערך string .

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

4. דרך נוספת להמיר היא לעשות הרחבת תגיות על ידי יצירת ילד לדוגמא אם נרצה לשנות צבע לתגיד בשם grid אז ניצור תת תגיד בשם grid.background

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

הבנתי שאם אני רוצה לשנות ערכים לאובייקט שהוא כבר קיים, זאת אומרת שנמצא לי איפה שהוא button למשל שכבר הגדירו לו צבע מסויים

ואני רוצה לשנות את הצבע שלו ממקום אחר, אז אני אשתמש בהצבת הערך לאותו button על ידי סוגריים מסולסלים, ראיתי דוגמא באינטרנט

שהבנתי, אבל אני עדיין לא סגור על עצמי שהבנתי לגמרי

ואני לא אוהב להמשיך ללמוד אם אני לא לומד או לא הבנתי משהו עד הסוף :)

קישור לתוכן
שתף באתרים אחרים

לאט לאט...

א. התחביר של XAML עומד בכללים ובחוקים של XML.

שם יש את המאפיינים הכללים של: מרחבי שמות, תגיות, ותגיות מקוצרות, מאפיינים (אטריביוטים).

ב. הXAML Parser ממיר את התגיות לאובייקטים. לא לצורה ויזואלית. האובייקטים ומנוע התצוגה של WPF יחד אחראים לתצוגה הויזואלית.

אם בXAML כתוב

<Button x:Name="b" Content="Click!"/> 

אז הפרסר קורא את זה ועושה ככה

Button b = new Button() {Content = "Click!" }

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

<Button>
<Button.Content>
Click!
</Button.Content>
</Button>

ד. בXAML יש Markup extension שזה הרחבת אפשרויות הביטוי, למחלקות שמספקות פונקציונליות משוכללת מאשר המרת התוכן הטקסטואלי. הרחבות אלו באים בסוגריים מסולסלות. המפורסמת שבהרחבות אלו זה ה"Binding", שהיא נותנת אפשרות לומר למאפיין, נגיד לטקסט של הכפתור: "אני רוצה שהתוכן שלך יהיה התוכן שנמצא כעת בתיבת הטקסט שמעליך". זה נושא שלם ששמו Binding שעיקרו עשוי לחבר את שכבת התצוגה עם מחלקת התצוגה, באופן שהתצוגה איננה צריכה להכיר ולפעול בתצוגה עצמה.

קישור לתוכן
שתף באתרים אחרים

מה זה אומר בדיוק? אני לא הכי יודע. אני ידוע להשתמש, אבל כל עוד אינני מתכונן לכתוב מחלקה כזו, אין לי סיבה לדעת "איך עובד" והכל.

דוגמה? הBinding שכנראה ראית ודיברתי עליו: http://msdn.microsoft.com/en-us/library/system.windows.data.binding(v=vs.110).aspx זה מחלקה שיורשת ממחלקת MarkupExtension.

קישור לתוכן
שתף באתרים אחרים

מה לגבי הסוגריים המסולסלות האלה

{ } שבפנים יש :x מה הקטע, מתי אני צריך לדעת שאני משתמש בזה ? מה זה בעצם

קראתי ולא הבנתי....

הכל ברור לי פחות או יותר פרט לסוגריים המסולסלות האלה חח

קישור לתוכן
שתף באתרים אחרים

הסטטיק הזה גורם לערך של המאפיין Background להיות כערכו של השדה/מאפיין/קבוע בשם ActiveCaptionBrush הנמצא במחלקה SystemColors.

לא כ"כ מסובך.

כשפותחים את הסוגריים המסולסלות כותבים מייד מיל שהיא שם המחלקה הרצוייה היורשת ממחלקת MarkupExtension אח"כ כותבים ערכי מאפיינים של מחלקה זו כמו בXAML שם המאפיין = וערך טקסטואלי (רק שהוא לא מוקף במרכאות כבXML). במידה ויש קונסטרקטור למחלקה הזו (זה המקרה שלנו) אז הערך שכתוב בצורה חופשית לא על מאפיין כל שהוא מועבר לקונסטרקטור.

קישור לתוכן
שתף באתרים אחרים

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

×
  • צור חדש...