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

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

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

WPF:Trigger והמסתעף

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

    לWPF שבינינו
    האם מישהוא יכול להעלות כאן הדרכה ל Triger ב - WPF
    מה תועלתו וכיצד שימושו (הדרכה מעשית)
    רוב תודות!

    פורסם במקור בפורום CODE613 ב19/06/2013 15:34 (+03:00)

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

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

      המקום לכתיבת טריגר זה רק בתוך סטייל (אמנם בכל אלמנט WPF יש מאפיין בשם Triggers אבל הוא מקבל רק EventTrigger, ולא שימושי בד"כ).

      אז הטריגר נחלק לשלוש חלקים:
      [list:ottwv6w1]א. מאפיין למעקב אחרי ערכו,
      ב. הערך ש"מקפיץ" את החלת הסגנון
      ג. הסגנון שיוחל במידה וההמאפיין מאוכלס בערך הנכון.[/list:u:ottwv6w1]

      בטריגר רגיל, המאפיין שאנו עוקבים אחריו חייב להיות מאפיין מקומי = חבר במאפייני האובייקט עליו בו אנו נמצאים.

      נתחיל בדוגמא:

      <TextBox Height="23" Width="120">
          <TextBox.Style>
              <Style TargetType="TextBox">
                  <Style.Triggers>
                      <Trigger Property="Text" Value="שלום">
                          <Setter Property="Background" Value="Red" />
                      </Trigger>
                  </Style.Triggers>
              </Style>
          </TextBox.Style>
      </TextBox>
      

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

      <Trigger Property="IsMouseOver" Value="True">
          <Setter Property="Background" Value="Red" />
      </Trigger>
      

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

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

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

      פורסם במקור בפורום CODE613 ב19/06/2013 18:50 (+03:00)

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

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

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

        מהו דטה טריגר?

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

        בדטה טריגר במקום המאפיין Property יש לטריגר רגיל, יש מאפיין Binding.
        הוא מקבל ביטוי "בינדינגי" שאנו יכולים להפנות לכל מאפיין שיש לנו גישה אליו, ואחריו הטריגר יעקוב.

        הנה דוגמא:

        <Button Content="Button" HorizontalAlignment="Left" Name="button1" VerticalAlignment="Top" Width="75" Margin="50,50">
            <Button.Style>
                <Style TargetType="Button">
                    <Style.Triggers>
                        <DataTrigger Binding="{Binding ElementName=textBox1, Path=Text}" Value="">
                            <Setter Property="IsEnabled" Value="False" />
                        </DataTrigger>
                    </Style.Triggers>
                </Style>
            </Button.Style>
        </Button>
        <TextBox Height="23" HorizontalAlignment="Left" Margin="50,80" Name="textBox1" VerticalAlignment="Top" Width="75" />
        

        בדוגמא זו המעקב נעשה מתוך הסטייל של הButton, ואחר המאפיין Text של הTextBox שהובא גם בדוגמא להשלמת התמונה.

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

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

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

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

          טריגר עוקב אחר מאפיין אחד בלבד.
          מה אם נרצה לתת יותר מתנאי אחד ל"הקפצת" הסגנון?

          לדוגמא, נרצה לקבוע צבע אדום לTextBox ריקה, בתנאי שאיננה כעת בפוקוס.
          אז אנו רוצים שהיא תהיה אדומה אם א. היא ריקה ב. היא איננה בפוקוס כעת.

          לשם כך יש MultiTrigger. הנה דוגמא:

          <Style TargetType="TextBox">
              <Style.Triggers>
                  <MultiTrigger>
                      <MultiTrigger.Conditions>
                          <Condition Property="Text" Value="" />
                          <Condition Property="IsFocused" Value="False" />
                      </MultiTrigger.Conditions>
                      <MultiTrigger.Setters>
                          <Setter Property="Background" Value="Red" />
                      </MultiTrigger.Setters>
                  </MultiTrigger>
              </Style.Triggers>
          </Style>
          

          כפי שרואים בדוגמא, המולטיטריגר מקבל קבוצת קונידשינים, כאשר כל התנאים נכונים מוקפץ הטריגר וההגרות ה"סטרס" שלו מוחלות.

          בנוסף לMultiTrigger שהוא בא לריבוי טריגרים רגילים, יש MultiDataTrigger לריבוי DataTrigger.

          פורסם במקור בפורום CODE613 ב25/06/2013 21:40 (+03:00)

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

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

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

            דוד, מדריך נפלא!! :smile:

            פורסם במקור בפורום CODE613 ב09/02/2014 18:57 (+02:00)

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

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

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

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