zoukankan      html  css  js  c++  java
  • WPF实现TextBox水印效果

    在日常项目中,一个TextBox需要输入用户名,我们通常的做法是先用一个TextBlock来说明,例如下面的截图:

    今天将使用另外一种方式来展示,使用水印的方式。请参考下面的代码:

        <Window.Resources>
            <BooleanToVisibilityConverter x:Key="booleanToVisibilityConverter"/>
            <Style x:Key="EntryFieldStyle" TargetType="Grid" >
                <Setter Property="HorizontalAlignment" Value="Stretch" />
                <Setter Property="VerticalAlignment" Value="Center" />
                <Setter Property="Margin" Value="20,0" />
            </Style>
        </Window.Resources>
        <Grid Style="{StaticResource EntryFieldStyle}">
            <Grid.RowDefinitions>
                <RowDefinition/>
                <RowDefinition/>
            </Grid.RowDefinitions>
            <Grid Grid.Row="0">
                <TextBlock 
                        Text="请输入用户名" Margin="5,2"
                        Visibility="{Binding ElementName=txtWatermark, Path= Text.IsEmpty,
                        Converter={StaticResource booleanToVisibilityConverter}}"/>
                <TextBox x:Name="txtWatermark" Background="Transparent" BorderBrush="Indigo"/>
            </Grid>
        </Grid>

    运行效果截图:

    我们可以把这个封装成一个UserControl,这样就可以复用了。可以下载我的项目代码,我已经把它封装成一个控件。代码下载

    当然我们也可以使用其他控件实现,例如 Extended WPF Toolkit WatermarkTextBox 控件。

    如果有其他实现方式欢迎与我分享。感谢你的阅读。

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    HTML 语义化标签-新增标签介绍
    HTML基础知识点
    Android JSON 解析关键代码
    [USACO16DEC]Cities and States省市
    [洛谷P1835]素数密度
    [洛谷P1168]中位数
    [HNOI2008]越狱
    [HAOI2007]上升序列
    [SHOI2009]Booking 会场预约
    [洛谷P1892][codevs2597]团伙
  • 原文地址:https://www.cnblogs.com/yang-fei/p/4022790.html
Copyright © 2011-2022 走看看