אודות WPF
-
אני רגיל לכתוב תוכנות ב WFA , אבל אני רואה שיש פה הרבה דיונים על WPF, האם יש ב WPF משהו מיוחד [חוץ מהעיצוב כמובן] לאומת WFA ?
כשאני רוצה לחליט אם לכתוב את התוכנה בזה או בזה אלו שיקולים אתם יכולים להציע לי לשקול?פורסם במקור בפורום CODE613 ב17/07/2013 21:12 (+03:00)
-
פעם ראשונה שאני שומע על WFA מה זה מי זה מו זה??? לינקים הסברים???
לגבי WPF זהו המודל הכי חכם שיש היום לניהול תצוגות טהורות, וקוד טהור, בלי לערבב אותם אחת עם השניה, אלא לתת להם רק לדבר זה עם זה.
החיסרון שלו הוא בכך שאינו אינטרנטי, ולא הייתי ממליץ לך ללמוד דבר חדש זולת אינטרנט.
בהצלחה.
פורסם במקור בפורום CODE613 ב17/07/2013 23:59 (+03:00)
-
פעם ראשונה שאני שומע על WFA מה זה מי זה מו זה??? לינקים הסברים???
הכוונה ל:
Windows Forms Applicationלגבי WPF זהו המודל הכי חכם שיש היום לניהול תצוגות טהורות, וקוד טהור, בלי לערבב אותם אחת עם השניה, אלא לתת להם רק לדבר זה עם זה.
יש בזה כזה יתרון גדול עד שהלכו ועשו מזה מסלול חדש לגמרי ?
החיסרון שלו הוא בכך שאינו אינטרנטי, ולא הייתי ממליץ לך ללמוד דבר חדש זולת אינטרנט.
WFA כן נחשב אינטרנטי ? עכ''פ מה כן נחשב אינטרנטי.
בהצלחה.
אמן! וכן למר.
פורסם במקור בפורום CODE613 ב18/07/2013 00:06 (+03:00)
-
אוקי, אז אם ככה אני ממליץ לך לעזוב מיידית את WFA אין לך שום ברירה אלא להתקדם, התפיסה של WPF היא שונה לגמרי באופן טוטאלי בכל נושא ה UI קוראים לזה MVVM דהיינו מודל-וויו וויו-מודל
המשמעות היא, שהיוזר כותב וקורא ישירות ל Property וזה דו סטרי. כך שהוויו - מחובר למודל והמודל מחובר לוויו.הבשורה הגדולה של WPF זה תכונת ה binding שהיא המצאה השמורה כולה למייקרוסופט, (אחריהם כמובן התחילו לפתח מודלים אינטרנטיים שתומכים ברעיונות דומים)
בקצרה תכונת binding משמעותה, שאפשר לכרוך ערך של מאפיין, לכל ערך שהוא מכל מקום שתרצה. אם אתה רגיל לתת ערכים מוחלטים למאפיינים ב winform מעתה רוב הערכים של המאפיינים אינם ערכים מוחלטים, כי אם ערכים "חכמים".אתן לך דוגמא פשוטה ותבין את ההבדל בין WPF לבין winform
צור פרוייקט חדש של wpf וקרא לו "SliderBindControl"
אחר כך הכנס את הקוד הבא למטה איפה שייפתח לך חלון חדש, פשוט תחליף את הקוד הקיים בזה שלהלן:<Window x:Class="SliderBindControl.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="350" Width="525"> <Grid> <Slider x:Name="slider" HorizontalAlignment="Left" Margin="100,245,0,0" VerticalAlignment="Top" Maximum="300" Minimum="10" Width="295"/> <TextBlock HorizontalAlignment="Left" Margin="263,268,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Text="{Binding Value, ElementName=slider}" /> <TextBox HorizontalAlignment="Left" Height="23" Margin="100,217,0,0" TextWrapping="Wrap" Text="תיבת טקסט לכתיבה חופשית" VerticalAlignment="Top" Width="{Binding Value, ElementName=slider}"/> <TextBox HorizontalAlignment="Left" Height="23" Margin="100,189,0,0" TextWrapping="Wrap" Text="{Binding Value, ElementName=slider, Mode=TwoWay}" VerticalAlignment="Top" Width="295"/> </Grid> </Window>
תריץ את הפרוייקט ותראה שתנועת הסליידר משפיעה על רוחב הטקסט בוקס, ועל הערך שיש בטקסט בלוק מתחתיו. כמו כן תיבת הטקסט העליונה יכולה לקבל ערך מ 10 עד 300 ולאחר לחיצה על TAB היא תשפיע על כל האלמנטים דרך הסליידר.
תבדוק ישר והפוך ותראה שאין שום קוד C# מאחורה, שום אירוע כלום!!!
הרעיון הוא פשוט, המאפיינים של האלמנטים הללו הם "חכמים" ולא מוחלטים, הם כרוכים לערכו של הסליידר (הטקסט בוקס העליון, כרוך דו צדדית לסליידר ולכן כשערך הסליידר משתנה גם הוא משתנה וכשערכו משתנה גם ערך הסליידר, וזה משפיע כל על ההקשרים)צא וחשוב כמה תיחכום הכניסו בתיכנות ה UI באותו רגע, שהחליטו שערכי פקדים לא יהיו עוד מוחלטים כי אם יחסיים או קשורים למאפיינים אחרים. אין לך כל מאפיין ומאפיין שאי אתה יכול לרדות בו כדגת הים, ואין לך דבר, חכם יותר, מאשר עולם שבו היחסות שולטת בכל, הדברים הולכים ומתקרבים יותר ויותר לצורה של האקולוגיה, שבה ערכים מושפעים ללא הרף מערכים אחרים הנמצאים בתנועה מתמדת........
איינשטיין לא אמר פעם
"מה שמעניין בעולם אלו הנוסחאות, ולא המספרים, חוץ ממהירות האור שהיא כפופה למספר מוחלט"שים לב גם שאין שמות לאובייקטים, תם עידן השמות, אפשר להחזיק אובייקטים של UI בלי שמות, מכיון שלא תמיד יש צורך לקרוא להם מהקוד, וגם הדיזיינר כבר לא עובד כמו ב winform לא עוד מדובר בשדה שנוצר אי שם בקרבי הדיזיינר. מדובר באלמנט טהור, פורח באויר שאת ערכיו הוא שואב מתוך הזאמל, או מהדיפולט.
יש עוד הרבה יתרונות של עיצוב מודולרי, התנהגות מודולרית של פקדים, הסתכלות חדשה על אירועים, ובכלל פקדים מקוננים אחד בתוך השני כמו עץ שלא נגמר. אתה יכול לקנן פקד וידאו, בתוך צלע של קוביה תלת מימדית (אגב ראיתי משהו כזה מרשים מאוד) כשהיא עצמה מקוננת בתוך שורה של datagrid ולסובב אותה תוך כדי ריצה, וכל זה בלי שורה אחת של קוד!!!!יש גם תיחכום רב בכל נושא הפריסה של פקדים הכל שם נוזלי כמו מים, אתה רק צריך "לנפח" זכוכיות בצורה שמתאימה לך, ולשפוך לשם פקדים כאוות נפשך. קרא בוובמאסטר ותרווה נחת.
מקוה ששכנעתי אותך להתקדם טכנולוגית למרות הפיוטיות שנקטתי בה.
בהצלחה.
פורסם במקור בפורום CODE613 ב18/07/2013 01:26 (+03:00)
-
תודה רבה על ההסבר המפורט ,
אבל אני מתרשם שאם אני בונה תוכנה שלא אמורה לתת חויה חזותית מרשימה במיוחד אין צורך ב WPF ולגבי חיסכון בקוד ראיתי שבסופו של דבר ההוראה שרוחב תיבת הטקסט ישתנה בהתאם לסלייד נמצאת ב XAML במקום בתוך קלאס של החלון כמו ב-WFA, אז מה הרווחנו? בפרט שאת הקוד ב XAML אי אפשר להקליק עם העכבר בחלון המאפיינים אלא צריך ללמוד תחביר חדש של XAML ולרשום את ההוראה בתוך ה XAML.
עוד דבר כשיש איזו שגיאה בהוראה שנתת לפקדים בתוך ה XAML איך אתה בודק את זה ? איך אתה יודע בדיוק באיזה שלב יש את הבאג, ומה הערך של כל דבר בכל שלב? אבל אם זה קוד אתה עובר עם הדבאגר ורואה הכל.עוד דבר שרציתי להבין מדוע הכל יושב על ה Grid למה אי אפשר שהכל ישב על ה Window בעצמו ?
אודה לך אם תפרט על עוד יתרונות של WPF לאומת WFA.
פורסם במקור בפורום CODE613 ב18/07/2013 08:26 (+03:00)
-
אני מתכנת בדוט נט משנת 2002 בערך.
כמובן שאז בWinForms.
עברתי לWPF לגמרי רק לפני כמה חודשים.
היה לי קשה לעבור, לא מצאתי סיבה, ולא אהבתי את הבלגן שWPF עושה מכל עניין.
אהבתי את WinForms שהכל קוד, והכל ידוע.
אבל, עברתי.רחמים, אין לך סיבה למהר, אבל אם יום אחד נמאס לך מWinForms,
אתה תקפוץ לWPF.מה WPF נותן?
אז "ארכיטקט" נתן הרבה סיבות.
מבחינתי הMVVM הוא משני בחשיבותו (אני לא הולך בדרך זו לצערי)
מה שמשך אותי זה קלות העיצוב, הביינדינג, ומעל הכל הItemTemlate לסוגיהם.עכשיו להפך מה החסרונות של WPF?
אז השאלה על הDebug של הXAML זה צליפה בנקודה רגישה, זה באמת טיפה מסובך יותר. אבל לא רציני.
במיוחד כשיש פורום שעוזרים בכל בעיה...השאלה למה הפקדים צריכים להיות בתוך Grid ולא ישירות בWindow היא שאלת "אורח".
כשתיכנס לעניינים תבין הרבה, א"א להבין במבט ראשון...
אבל עניינית התשובה היא בגלל שWindow הוא אלמנט מהקבוצה ContentControl שהם בעצם מקבלים אלמנט בן יחיד.
בשביל לקבל כמה אלמנטים ב"מיכל" אחד יש את Grid כמו עוד כמה דומים כל אחד וה"מומחיות" שלו.פורסם במקור בפורום CODE613 ב18/07/2013 10:48 (+03:00)
-
אבל אני מתרשם שאם אני בונה תוכנה שלא אמורה לתת חויה חזותית מרשימה במיוחד אין צורך ב WPF
הראתי לך דוגמא עד כמה יפה כחו של WPF בניהול ה UI זה לא איזה תוספת שאמורה לתת "חוויה מרשימה" זה שינוי התפיסה מהיסוד, ההפרדה בין UI לבין הלוגיקה, היא תפיסה מתבקשת מאליה ולא התייחסת גם לטכניקות של פריסת הפקדים וניהול מודולרי של אובייקטים. לך למדריך וובמאסטר ואז תוכל להגיע למסקנות. בעיקרון יש עדיין מפתחים שעובדים עם קובול, הם יכולים לשאול אותך למה צריך בכלל דוט נט. מי שכבר שואל שאלה כזאת, התשובה עבורו היא שלא צריך.
כמובן שכאן אתה נכנס לדיון שאינו טכני, דוד ל.ט. יאמר שאין לאן למהר וכו'. אז דעתי ידועה בנושא, יש לאן למהר, וצריך לתת לכל טכנולוגיה שנתיים שלוש להוכיח את עצמה, שפני הניסיון יהיו מי שיבחר, אבל אחר כך אם זה משמעותי, לקפוץ פנימה.
בכלל אם אתה כבר הולך על פרדיגמות חדשות, המלצתי היא ללכת לעולם ה web יש לך את MVC של דוט נט שזה טוב מאוד, וחוץ מזה המון קוד פתוח לבחירתך בעיקר JS.
בהצלחה!
פורסם במקור בפורום CODE613 ב18/07/2013 11:51 (+03:00)
-