דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. ארכיון code613m
  4. WPF: DataTemplate עם 2 אפשרויות - היש כזאת חיה?

WPF: DataTemplate עם 2 אפשרויות - היש כזאת חיה?

מתוזמן נעוץ נעול הועבר ארכיון code613m
12 פוסטים 6 כותבים 583 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • A מנותק
    A מנותק
    avr416
    כתב ב נערך לאחרונה על ידי
    #1

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

    2016-06-06.png
    שאלתי ובקשתי היא: כיון שאיני מאפשר למשתמש לסגור את החלון הראשי, וכן את הטאב עם ה "+" (שנועד להוספת טאבים), אינני רוצה שיוצג לצידם סמל הX. (מבחינת יופי, כי גם כרגע זה לא יסגור... כי בקוד אני בודק את מה הוא מנסה לסגור, ולא מאפשר לו לסגור אותם.)
    העניין הוא שכיון שאני מוסיף אותם בצורה דינמית ע"י דטה טמפלייט, השאלה האם אפשר לעשות דטה טמפלייט לראשון ולאחרון, ודטה טמפלייט אחר לשאר?
    ואם כן - איך?
    כמו כן, אם למישהו יש רעיון אחר לשמות של הלשוניות (במקום "חלון 2" וכו') - אשמח!
    תודה רבה!
    אברהם

    פורסם במקור בפורום CODE613 ב06/06/2016 21:29 (+03:00)

    תגובה 1 תגובה אחרונה
    0
    • רחמיםר מנותק
      רחמיםר מנותק
      רחמים מורחק
      כתב ב נערך לאחרונה על ידי
      #2

      יש דבר שנקרא DataTemplateSelector

      פורסם במקור בפורום CODE613 ב06/06/2016 21:36 (+03:00)

      תגובה 1 תגובה אחרונה
      1
      • מ מנותק
        מ מנותק
        מנצפך 0
        כתב ב נערך לאחרונה על ידי
        #3

        @avr416

        כמו כן, אם למישהו יש רעיון אחר לשמות של הלשוניות (במקום "חלון 2" וכו') - אשמח!
        תודה רבה!
        אברהם

        אם הבנתי אותך נכון:
        אולי "סימניה"?

        פורסם במקור בפורום CODE613 ב06/06/2016 22:00 (+03:00)

        תגובה 1 תגובה אחרונה
        1
        • clickoneC מנותק
          clickoneC מנותק
          clickone
          כתב ב נערך לאחרונה על ידי
          #4

          אם אתה רוצה כמו כרום, נראה לי שדיברו ע"ז פעם בפורום.
          אני לא בטוח, אבל נראה לי כאן
          http://code.613m.org/viewtopic.php?f=1&t=128&start=10#p782

          [img:1n5vvxt4]https://camo.githubusercontent.com/1db4439d3bdcc4bb868f2d8046f4f486c08f1212/687474703a2f2f692e696d6775722e636f6d2f713557585768312e676966[/img:1n5vvxt4]

          הנה עוד לינקים:
          https://github.com/sskodje/wpfchrometabs-mvvm
          https://www.nuget.org/packages/WPFChromeTabsMVVM/
          https://www.google.co.il/search?sourceid=chrome-psyapi2&ion=1&ie=UTF-8&q=wpf tab chrome control&oq=wpf tab chrome control&aqs=chrome..69i57.11132j0j7&bav=on.2,or.&bvm=bv.123664746,d.d24&biw=1920&bih=912&dpr=1&ech=1&psi=4clVV8qMJYnvUtyJicAK.1465240033277.3&ei=4clVV8qMJYnvUtyJicAK&emsg=NCSR&noj=1

          פורסם במקור בפורום CODE613 ב06/06/2016 22:11 (+03:00)

          אין טסט כמו פרודקשן.

          המייל שלי urivpn@gmail.com

          תגובה 1 תגובה אחרונה
          3
          • רחמיםר מנותק
            רחמיםר מנותק
            רחמים מורחק
            כתב ב נערך לאחרונה על ידי
            #5

            @רחמים

            יש דבר שנקרא DataTemplateSelector

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

            פורסם במקור בפורום CODE613 ב06/06/2016 22:15 (+03:00)

            תגובה 1 תגובה אחרונה
            1
            • אקססא מנותק
              אקססא מנותק
              אקסס
              כתב ב נערך לאחרונה על ידי
              #6

              @avr416

              כמו כן, אם למישהו יש רעיון אחר לשמות של הלשוניות (במקום "חלון 2" וכו') - אשמח!
              תודה רבה!
              אברהם

              שם הספר

              פורסם במקור בפורום CODE613 ב07/06/2016 14:36 (+03:00)

              תגובה 1 תגובה אחרונה
              0
              • A מנותק
                A מנותק
                avr416
                כתב ב נערך לאחרונה על ידי
                #7

                @רחמים

                @רחמים
                יש דבר שנקרא DataTemplateSelector

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

                אחרי ששרפתי מלא שעות בניסיון עם כל מיני ספריות מוכנות שמצאתי.. (בעזרת הקישורים שקליקוואן הביא :smile: )
                באמת יש שם דברים ברמה! אבל צריך הרבה זמן כדי להבין איך בדיוק לעבוד לפי ההגדרות שלהם וכו', וכיון שאינני מבין גדול בWPF עדיין..
                אז אני מעדיף לנסות לעשות את זה לבד..
                ניסיתי לעשות כמו שרחמים הציע, ירשתי מTabItem והוספתי לו את הפרופרטי הזה,
                העניין הוא שכאשר אני עושה בינדינג לכפתור של הסגירה - משום מה זה לא עובד.. (כלומר הוא לא זורק שום שגיאה, אבל גם ממשיך להראות את ה X בכל הכרטיסיות.
                הנה הקוד של הבנידינג:

                <Button Name="btnDelete" DockPanel.Dock="Right" Margin="2,0,2,0" Padding="0"
                   Visibility="{Binding  CloseButtonVisebilty, Converter={StaticResource booleanToVisibilityConverter}}"
                   Click="btnDelete_Click"
                   CommandParameter="{Binding RelativeSource={RelativeSource AncestorType={x:Type TabItem}},Path=Name}">
                   <Canvas Width="24" Height="24" Background="Transparent">
                   <Path Data="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"
                     Fill="{DynamicResource TabControl.Foreground}" />
                     </Canvas>                                          
                  </Button>
                

                והנה הקוד של הטאב איטם:

                public class TabItemCustom:TabItem
                    {
                        public static readonly DependencyProperty CloseButtonVisebiltyProperty
                            = DependencyProperty.Register("CloseButtonVisebilty", typeof(bool),typeof(TabItemCustom));
                
                        public bool CloseButtonVisebilty
                        {
                            get { return (bool)GetValue(CloseButtonVisebiltyProperty); }
                            set { SetValue(CloseButtonVisebiltyProperty, value); }
                        }
                
                        public TabItemCustom()
                        {
                            CloseButtonVisebilty = true;
                        }
                
                    }
                

                והנה של הקונוורטר:

                class BooleanToVisibilityConverter : IValueConverter
                    {
                        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
                        {
                            bool boolValue = (bool)value;
                            if (boolValue)
                            {
                                return Visibility.Visible;
                            }
                            else
                            {
                                return Visibility.Collapsed;
                            }
                        }
                
                        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
                        {
                            throw new NotImplementedException();
                        }
                    }
                

                סליחה אם משהו מיותר.. פשוט אין לי מושג איפה הבעיה..

                תודה רבה מראש!!
                אברהם

                פורסם במקור בפורום CODE613 ב07/06/2016 22:02 (+03:00)

                תגובה 1 תגובה אחרונה
                0
                • רחמיםר מנותק
                  רחמיםר מנותק
                  רחמים מורחק
                  כתב ב נערך לאחרונה על ידי
                  #8

                  למה עשית את המאפיין בוליאני? תעשה אותו מטיפוס Visibility וכך גם לא תצטרך קונוורטר
                  חוץ מזה הבינדינג צריך להיות טמפלט-בינדיג כי המאפיין לא נמצא בלחצן עצמו ולא בדטה-קונטקס שלו אלא בטמפלט שזה הטאב-איטם

                  פורסם במקור בפורום CODE613 ב07/06/2016 22:27 (+03:00)

                  תגובה 1 תגובה אחרונה
                  1
                  • A מנותק
                    A מנותק
                    avr416
                    כתב ב נערך לאחרונה על ידי
                    #9

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

                    Visibility="{Binding CloseButtonVisebilty, RelativeSource={RelativeSource AncestorType={x:Type local:TabItemCustom}}}"
                    

                    ואכן זה עובד!!

                    2016-06-07.png

                    תודה רבה!!

                    ClickOne - תודה רבה על כל הקישורים שהבאת!! למדתי מהם המון!!
                    במיוחד מצאתי כאן אחד שעושה פרוייקט נהדר של עיצובים חדשניים לWPF.

                    פורסם במקור בפורום CODE613 ב07/06/2016 22:33 (+03:00)

                    תגובה 1 תגובה אחרונה
                    3
                    • dovidD מנותק
                      dovidD מנותק
                      dovid ניהול
                      כתב ב נערך לאחרונה על ידי
                      #10

                      אם תלך לשאלות הראשונות בפורום זה היה על פקד טאבים בWPF.
                      הפורום הכיל אז 4 משתמשים...

                      פורסם במקור בפורום CODE613 ב08/06/2016 01:01 (+03:00)

                      מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                      בכל נושא אפשר ליצור קשר dovid@tchumim.com

                      תגובה 1 תגובה אחרונה
                      2
                      • A מנותק
                        A מנותק
                        avr416
                        כתב ב נערך לאחרונה על ידי
                        #11

                        @דוד ל.ט.

                        הפורום הכיל אז 4 משתמשים...

                        לאן נעלם שמואל? :lol:

                        פורסם במקור בפורום CODE613 ב08/06/2016 14:43 (+03:00)

                        תגובה 1 תגובה אחרונה
                        0
                        • dovidD מנותק
                          dovidD מנותק
                          dovid ניהול
                          כתב ב נערך לאחרונה על ידי
                          #12

                          לא נעלם החליף עבודה, מידי פעם הוא מציף וצוחק עלינו 🙂
                          הוא בצוות וזה נדיר במקרה כזה שנצרכים לפורם, כך לענ"ד המקנאה.

                          פורסם במקור בפורום CODE613 ב08/06/2016 18:05 (+03:00)

                          מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                          בכל נושא אפשר ליצור קשר dovid@tchumim.com

                          תגובה 1 תגובה אחרונה
                          2

                          בא תתחבר לדף היומי!
                          • התחברות

                          • אין לך חשבון עדיין? הרשמה

                          • התחברו או הירשמו כדי לחפש.
                          • פוסט ראשון
                            פוסט אחרון
                          0
                          • דף הבית
                          • קטגוריות
                          • פוסטים אחרונים
                          • משתמשים
                          • חיפוש
                          • חוקי הפורום