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

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

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

WPF: בעיה בבינדינג לקומבובוקס

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

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

    <ComboBox Margin="5,2" Padding="2"  SelectedIndex="0" Width="150" Height="30"  x:Name="comboIndex12"  >
           <ComboBox.ItemsSource>
                    <CompositeCollection >
                             <ComboBoxItem IsSelected="True">בחר ספר לחיפוש</ComboBoxItem>
                             <CollectionContainer Collection="{Binding NameBookToIndex}"></CollectionContainer>
                     </CompositeCollection>
    </ComboBox.ItemsSource>
    

    כמו כן, ניסיתי בצורה כזאת:

    <ComboBox Margin="5,2" Padding="2"  SelectedIndex="0" Width="150" Height="30"  x:Name="comboIndex12"  >
            <ComboBox.ItemsSource>
                     <CompositeCollection >
                              <ComboBoxItem IsSelected="True">בחר ספר לחיפוש</ComboBoxItem>
                               <CollectionContainer Collection="{Binding }"></CollectionContainer>
                      </CompositeCollection>
             </ComboBox.ItemsSource>
             <ComboBox.ItemTemplate>
                     <DataTemplate>
                             <TextBlock Text="{Binding Path=NameBookToIndex}"/>
                     </DataTemplate>
            </ComboBox.ItemTemplate>
     </ComboBox>
    

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

    <ComboBox Margin="5,2" Padding="2" ItemsSource="{Binding NameBookToIndex}" SelectedIndex="0" Width="150" Height="30"  x:Name="comboIndex12" / >
    

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

    <ComboBox Margin="5,2" Padding="2" ItemsSource="{Binding}" SelectedIndex="0" Width="150" Height="30"  x:Name="comboIndex12"  >                           
       <ComboBox.ItemTemplate>
              <DataTemplate>
                        <TextBlock Text="{Binding NameBookToIndex}"/>
              </DataTemplate>
       </ComboBox.ItemTemplate>
    </ComboBox>
    

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

    תודה רבה!

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

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

      בשתי קטעי הקוד הראשונים יש גם בעיה של בינדינג לdatacontex בCollectionContainer (הסיבה ממש פשוטה - אין לחיה הזאת דטה קונטקסט), בעיה שמצאתי פה: http://stackoverflow.com/a/6446923/1271037. לכן אתה חייב לכתוב Source ראה שם דרך לקשר לDataContext של האב בצורה מפורשת', או יותר פשוט ופחות "אקדמי" - לתת שם לCollectionContainer ולשים בקוד את האוסף במאפיין הקולקשיין במקום בדטה קונטקסט של הקומבו.
      בקטע קוד הראשון והשלישי (שיש את השם של המאפיין NameBookToIndex) יש טעות לכתוב את המאפיין המייצג פריט בנתיב שמהווה המקור לכל הפריטים (ולא מה לשלוף בכל פריט).

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

      ואגב, אתה כבר דרכת בעניין http://code.613m.org/viewtopic.php?f=1&t=880&p=5729

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

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

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

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

        דוד, תודה רבה על המענה המפורט בשעת לילה מאוחרת כ"כ!!
        ואכן הבנת היטב על אף העייפות, ואף זכרת ששאלתי משהו דומה פעם (אפי' שאני כבר שכחתי..) :smile:

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

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

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

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

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