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

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

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. איך לייצר Watermark עבור TextBox ב-wpf

איך לייצר Watermark עבור TextBox ב-wpf

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

    להלן רעיון קל ליישום בשביל Watermark עבור TextBox ב-WPF באמצעות XAML בלבד:

    76b6c600-9b4f-4fe1-ae84-23997c724aa6-image.png

    (זה לא שאין ספריות והרבה כתבות על זה אבל בסופו של דבר הכל לא עבד לי חלק חוץ מהרעיון שלפניכם יש בזה גם מעלה מבחינת כך שזה מבוסס xaml בלבד)

    הסגנון מבוסס על שימוש בתכונת ToolTip של ה-TextBox לצורך הצגת ה-Watermark. כמובן שניתן להשתמש גם בתכונות אחרות (כגון Tag) – אני בחרתי ב-ToolTip, משום שכאשר מוצג Watermark, בדרך כלל אין צורך ממשי ב-Tooltip.

    בסגנון יש שני טריגרים שמאפיינים התנהגות של הסתרת ה-Watermark כאשר תיבת הטקסט בפוקוס או כאשר איננה ריקה

      <Style TargetType="TextBox" x:Key="WatermarkTextBox">
         <Setter Property="Template">
             <Setter.Value>
                 <ControlTemplate TargetType="TextBox">
                     <Border x:Name="border"
                         Background="{TemplateBinding Background}"
                         BorderBrush="{TemplateBinding BorderBrush}"
                         BorderThickness="{TemplateBinding BorderThickness}"
                         SnapsToDevicePixels="True">
                         <Grid>
                             <ScrollViewer x:Name="PART_ContentHost"
                                       Focusable="false"
                                       HorizontalScrollBarVisibility="Hidden"
                                       VerticalScrollBarVisibility="Hidden"/>
    
                             <TextBlock x:Name="PlaceholderHost" Text="{TemplateBinding ToolTip}"
                                        HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
                                        VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
                                        Padding="{TemplateBinding Padding}"
                                        Margin="{TemplateBinding Margin}"
                                        Opacity="0.2"
                                        IsHitTestVisible="False"
                                        Visibility="Collapsed"/>
                         </Grid>
                     </Border>
                     <ControlTemplate.Triggers>
                         <DataTrigger Binding="{Binding Path=Text, RelativeSource={RelativeSource Self}}" Value="">
                             <Setter Property="Visibility" TargetName="PlaceholderHost" Value="Visible"/>
                         </DataTrigger>
                         <DataTrigger Binding="{Binding Path=IsKeyboardFocusWithin, RelativeSource={RelativeSource Self}}" Value="true">
                             <Setter Property="Visibility" TargetName="PlaceholderHost" Value="Collapsed"/>
                         </DataTrigger>
                     </ControlTemplate.Triggers>
                 </ControlTemplate>
             </Setter.Value>
         </Setter>
     </Style>
    

    אפשר גם להסתיר את ה-tooltip כליל ולהשתמש רק ב-watermark במקום זאת על ידי הוספת הקוד דלהלן בתוך הסגנון.

     <Style.Resources>
         <Style TargetType="ToolTip">
             <Setter Property="Visibility" Value="Collapsed"/>
         </Style>
     </Style.Resources>
    

    גמ"ח מידע מחשבים ואופיס

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

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

      pcinfogmachP תגובה 1 תגובה אחרונה
      0
      • pcinfogmachP מנותק
        pcinfogmachP מנותק
        pcinfogmach
        השיב לקומפיונט ב נערך לאחרונה על ידי
        #3

        @קומפיונט
        מעניין! ככה זה באמת בחיפוש של תחומים צריך לבדוק מה מקובל - תודה

        גמ"ח מידע מחשבים ואופיס

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

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

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

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