התפקיד של 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).
איפה שלושתם במקרה שלנו? הנה הטריגר מבודד:
המודגש בצהוב זה המאפיין למעקב והערך שאם אכן נמצא יוחל הסטיילים המוגדרים בין מקטעי הטרייגר, במקרה שלנו החלה אחת מוקפת ירוק.
במידה והמאפיין למעקב איננו חלק מהאובייקט עליו חל הסטייל, נשתמש בDataTrigger. על כך ועוד סוגים, בימים הקרובים בס"ד.
פורסם במקור בפורום CODE613 ב19/06/2013 18:50 (+03:00)