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

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

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. ארכיון code613m
  4. WPF קומבו מיוחד בתוך dataGrid לא מקבל event

WPF קומבו מיוחד בתוך dataGrid לא מקבל event

מתוזמן נעוץ נעול הועבר ארכיון code613m
7 פוסטים 2 כותבים 645 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • T מנותק
    T מנותק
    tkt
    כתב ב נערך לאחרונה על ידי
    #1

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

    <DataGridTemplateColumn Header="תאור" Width="Auto" >
        <DataGridTemplateColumn.CellTemplate>
            <DataTemplate>
                <controls:MyComboBox x:Name="DescriptionCombo" Height="20" SelectedVal="{Binding Description,Mode=TwoWay}"
                                     ParentControl="ContactsCommunications" Sub="Description"/>
            </DataTemplate>
        </DataGridTemplateColumn.CellTemplate>
    </DataGridTemplateColumn>
    

    (ParentControl ו-Sub הם dependencyProperties לצורך מילוי הקומבו)

    בתוך ה-usercontrol שנקרא MyComboBox יש את הקומבו המיוחד שנקרא :EnhancedComboBox הקוד נראה כך:

    <local:EnhancedComboBox x:Name="comboBox"
                               MinWidth="20" Margin="5,0,0,0"
                               EnableNewItemAddition="True"  
                               AddNewItemText="הוסף חדש"    
                               AddNewItemButtonClicked="EnhancedComboBox_AddNewItemButtonClicked"  
                               SelectedValue="{Binding SelectedVal,ElementName=MyComboUserControl}"
                               SelectedValuePath="ID"
                               DisplayMemberPath="Value" SelectionChanged="combo_SelectionChanged">
    </local:EnhancedComboBox>
    

    הוקמבו מופיע, יש לו ערכים כשפותחים אותו אבל אי אפשר לבחור איבר או להחליף את הבחירה שהיתה בו. זה נראה שהוא פשוט לא מקבל בכלל את ה-event. הוספתי לו event של combo_SelectionChanged ובאמת אם הוא בתוך הגריד הוא לא מגיע אליו.
    ראיתי בחיפוש באינטרנט שיש מצב שה-datagrid לא מעביר לקומבו את האירועים. הבעיה היא שאני לא מבינה מה עושים בכזה מקרה, איך משחררים את האירוע?

    פורסם במקור בפורום CODE613 ב11/07/2013 00:17 (+03:00)

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

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

      אם את שמה את הקומבו מחוץ לדטהגריד אם אותם הגדרות בבינדינג, הכל דופק?
      ולמה מחלקה יורשת בתוך UserControl ולא ישירות הכל במחלקה היורשת או ביוזר קונטרול?

      פורסם במקור בפורום CODE613 ב11/07/2013 13:12 (+03:00)

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

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

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

        אם אני שמה את ה-user control במקום אחר - ולא בתוך הגריד אז הכל עובד בסדר. רק הבעיה אם הוא מוכנס לתוך הגריד.
        יש לי יוזר קונטרול MyCombobox שהוא אחראי על הבינדינג - ב-laod הוא מאתחל את הרשימה לפי הפרמטרים שנשלחים אליו ב-dependencyProperty והוא בעצם מאתחל את ה-local:EnhancedComboBox (שהוא יורש מ-combobox רגיל ומוסיף לו כפתור של הוסף חדש).
        ה- local:EnhancedComboBox הוא קוד שהורדתי מהאיטנרנט:

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

        פורסם במקור בפורום CODE613 ב11/07/2013 20:28 (+03:00)

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

          שכחתי להוסיף גם שהיוזר קונטרול מבצע את הevent של הוסף חדש - קוד זהה לכל ה-combobox. זו סיבה נוספת לכך שזה נכתב בתוך יוזר קונטרול.

          פורסם במקור בפורום CODE613 ב11/07/2013 21:44 (+03:00)

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

            מצאתי את הפתרון! זה לא שהקומבו בגריד לא עבד אלא פשוט לא הכנסתי אותו נכון לתוך ה-dataGrid.
            אני הגדרתי אותו בתוך DataGridTemplateColumn.CellTemplate במקום להגדיר אותו בתוך DataGridTemplateColumn.CellEditingTemplate ולכן הוא איפשר לפתוח את הקומבו אבל לא לבחור בו ערכים. ששיניתי את זה למיקום החדש (והוספתי ב-DataGridTemplateColumn.CellTemplate טקסט עבור ה-selectedItem של הקומבו.)

            פורסם במקור בפורום CODE613 ב14/07/2013 22:14 (+03:00)

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

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

              מעניין איפה הבאג, אבל העיקר שעובד.

              פורסם במקור בפורום CODE613 ב14/07/2013 22:28 (+03:00)

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

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

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

                כן, באמת מעניין אבל העיקר שעובד.
                תודה על ההשקעה במציאת הפתרון

                פורסם במקור בפורום CODE613 ב15/07/2013 11:20 (+03:00)

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

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

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

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