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

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

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

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

מתוזמן נעוץ נעול הועבר תכנות
3 פוסטים 2 כותבים 243 צפיות 2 עוקבים
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
תגובה
  • תגובה כנושא
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • 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
        • דף הבית
        • קטגוריות
        • פוסטים אחרונים
        • משתמשים
        • חיפוש
        • חוקי הפורום