ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

WPF 实现文本框textbox文字提示

2022-09-06 15:34:33  阅读:179  来源: 互联网

标签:提示 Visibility textblock 添加 文本框 Template WPF textbox


在Template中添加一个textblock用于提示文本的显示,Visibility="Collapsed"

同时添加一个触发器,当textbox的text没有内容时,textblock的Visibility="Visible",显示出来

    <Style x:Key="TextBoxPlaceHolder" TargetType="{x:Type TextBox}">

        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type TextBoxBase}">
                    <Grid>
                        <Border x:Name="border" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" SnapsToDevicePixels="True">
                            <ScrollViewer x:Name="PART_ContentHost" Focusable="false" HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Hidden" />
                        </Border>
                        <!-- 添加一个placeholder文本 -->
                        <TextBlock IsHitTestVisible="False" Visibility="Collapsed" Text="{TemplateBinding Tag}" x:Name="placeholder" FontFamily="{StaticResource LatoThin}" FontSize="{StaticResource FontSizeLarge}" Padding="{TemplateBinding Padding}" VerticalAlignment="Center" HorizontalAlignment="{TemplateBinding HorizontalAlignment}" Foreground="{StaticResource ForegroundVeryDarkBrush}" />
                    </Grid>
                    <ControlTemplate.Triggers>
                        <Trigger Property="IsEnabled" Value="false">
                            <Setter Property="Opacity" TargetName="border" Value="0.56" />
                        </Trigger>
                        <Trigger Property="IsMouseOver" Value="true">
                            <Setter Property="BorderBrush" TargetName="border" Value="{StaticResource TextBox.MouseOver.Border}" />
                        </Trigger>
                        <Trigger Property="IsKeyboardFocused" Value="true">
                            <Setter Property="BorderBrush" TargetName="border" Value="{StaticResource TextBox.Focus.Border}" />
                        </Trigger>
                        <!--当TextBoxPlaceHolder的text没有值时,显示placeholder-->
                        <DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=Self}, Path=Text}" Value="">
                            <Setter TargetName="placeholder" Property="Visibility" Value="Visible" />
                        </DataTrigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

 

标签:提示,Visibility,textblock,添加,文本框,Template,WPF,textbox
来源: https://www.cnblogs.com/xuzhongjie/p/16661973.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有