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

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

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

חיבור שני ערכים לקומבובוקס

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

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

    תודה רבה!!

    פורסם במקור בפורום CODE613 ב19/07/2015 16:52 (+03:00)

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

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

      פורסם במקור בפורום CODE613 ב19/07/2015 17:28 (+03:00)

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

        CodeDOM הציע מצויין (סקור גם את ItemTemplate).
        אם מדובר נטו על טקסט תוכל לדרוס את הToString ולא לציין DisplayPath.

        פורסם במקור בפורום CODE613 ב19/07/2015 18:29 (+03:00)

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

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

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

          כתבתי כך:

          <DataGridTemplateColumn Header="שם התורם)ניסיוני)" x:Name="donorNameCombobox">
                              <DataGridTemplateColumn.CellTemplate>
                                  <DataTemplate>
                                      <ComboBox>
                                          <ItemContainerTemplate>
                                              <WrapPanel>
                                                  <TextBox Text="{Binding Source={StaticResource personViewSource}, Path=FirstName}"/>
                                                  <TextBox Text="{Binding Source={StaticResource personViewSource}, Path=LastName}"/>
                                              </WrapPanel>                                    
                                         </ItemContainerTemplate>
                                      </ComboBox>
                                  </DataTemplate>
                              </DataGridTemplateColumn.CellTemplate>
          

          וזו התוצאה:

          ComboBox.png

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

          פורסם במקור בפורום CODE613 ב19/07/2015 18:44 (+03:00)

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

            נראה שהטעות שאיגדת את personViewSource לטקסט-בלוקים במקום לקומבו

            פורסם במקור בפורום CODE613 ב20/07/2015 08:17 (+03:00)

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

              יש פה כמה טעויות.
              דבר ראשון, ItemContainerTemplate איננו מאפיין של ComboBox, מה שCodeDOM הזכיר זה ItemContainerStyle.
              דבר שני, גם אם הוא היה מאפיין היית צריך להציב בו ככה ComboBox.PropertyName ולא סתם איבר בתוך הקומבו (שזה הופך לContent).
              דבר שלישי, הבינדינג של הטקסט בלוק צריך לשאוב מידע מההקשר שלו ולא משורש הנתונים (כי בכל שורה אתה רוצה שיציג את השורה הזו, וזה הנעשה ע"י שהבינדינג לא מכיל Source ואז הוא פונה לDataContext שזה רמת השורה בComboBox).

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

              <ComboBox HorizontalAlignment="Left" VerticalAlignment="Top" Width="150">
                  <ComboBox.Items>
                      <!--בתור נתונים תקעתי סתם אלמנטי זאמל כי בשבילם לא צריך שום ניימספיס-->
                      <Button />
                      <Button />
                      <Button />
                  </ComboBox.Items>
                  <ComboBox.ItemTemplate>
                      <DataTemplate>
                          <TextBlock>
                              <Run Text="{Binding Width}" Foreground="Red" />
                              <Run Text="{Binding Height}" />
                          </TextBlock>
                      </DataTemplate>
                  </ComboBox.ItemTemplate>
              </ComboBox>
              

              הנה תמונה:

              combo1.png
              שים לב, שסביב לרקע שנקבע לAzure יש רקע לבן. זהו בעצם בTempalte ברירת המחדל של הComboBoxItem שיש לו עיצוב משלו ובו משולב העיצוב אותו מציעים לו בDataTemplate כאלמנט פנימי.

              לעומת זאת, ע"י ItemContainerStyle אתה יכול לשנות את הטמפלט, ואז אתה לא מציע אלא אתה המבצע בעצמך:

              <ComboBox HorizontalAlignment="Left" VerticalAlignment="Top" Width="150">
                  <ComboBox.Items>
                      <!--בתור נתונים תקעתי סתם אלמנטי זאמל כי בשבילם לא צריך שום ניימספיס-->
                      <Button />
                      <Button />
                      <Button />
                  </ComboBox.Items>
                  <ComboBox.ItemContainerStyle>
                      <Style TargetType="ComboBoxItem">
                          <Setter Property="Template" >
                              <Setter.Value>
                                  <ControlTemplate>
                                      <TextBlock Background="Aqua">
                                          <Run Text="{Binding Width}" Foreground="Red" />
                                          <Run Text="{Binding Height}" />
                                      </TextBlock>
                                  </ControlTemplate>
                              </Setter.Value>
                          </Setter>
                      </Style>
                  </ComboBox.ItemContainerStyle>
              </ComboBox>
              

              תוצאה:

              combo2.png
              (אם אתה רוצה לעצב רק את המכיל לכמה ComboBox ולהשיאר "פתוח" את העיצוב ברמת הפריט, תוכל לשים את הContentPresetor שהוא שומר מקום לפריט התוכן. כך זה נראה בסטייל המקורי של הItemContainerStyle, תוכל לראות זאת ע"י Edit As Copy של הסטייל הזה).

              בקשר לאיך ללמוד XAML. זה אכן מתסכל. יש ספר בסיסי שנחשב מס' 1 בWPF, שמו WPF Unleashed, אותו קניתי ואכן הוא קידם אותי המון.
              (PDF פיראטי http://bit.ly/1I5Qa24).
              אבל מקרים כמו הקומבו הזה הם לא סיבה לדאגה, כי יש הרבה מאמרים על זה באינטרנט מעולים. רק שבמקום לחפש על ComboBox חפש על ListBox שהיא הItemsControl הכי נפוצה. העקרונות הם אותו דבר בכל יורשי הItemsControl. הנה דוגמאות:
              http://www.codeproject.com/Articles/18561/Custom-ListBox-Layout-in-WPF
              http://blogs.msdn.com/b/wpfsdk/archive/2007/08/31/specifying-the-selection-color-content-alignment-and-background-color-for-items-in-a-listbox.aspx

              פורסם במקור בפורום CODE613 ב20/07/2015 12:32 (+03:00)

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

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

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

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

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

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