WPF实现TextBox水印效果

摘要:
通常,当使用文本框时,水印文本通常放置在文本框上。今天,我们使用WPF创建一个常用的用户控件。最好编写自己的用户控件,以防止复制和粘贴大量冗余代码XAML:<文本框x:xmlns=“http://schemas.microsoft.com/winfx/2006/xaml/presentation“xmlns:x=”http://schemas.microsoft

通常情况下,在使用文本框的时候,一般会在文本框上放一段水印文字,今天用WPF来实现一下

创建一个用户控件

一般像这种常用的,最好是自己写成用户控件,防止复制粘贴大量冗余代码

XAML:
<TextBox x: 
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             xmlns:local="clr-namespace:CallCenter.UserControl"
             mc:Ignorable="d" 
             d:DesignHeight="450" d:DesignWidth="800" Name="MyTextbox">
    <TextBox.Background>
        <VisualBrush Stretch="None" AlignmentX="Left">
            <VisualBrush.Visual>
                <Border DataContext="{Binding ElementName=MyTextbox}" Background="White"  
                        Height="{Binding Path=ActualHeight}">
                    <TextBlock Text="{Binding ElementName=MyTextbox,Path=TipText}"
                               VerticalAlignment="{Binding ElementName=MyTextbox,Path=VerticalContentAlignment}">
                        <TextBlock.Style>
                            <Style TargetType="TextBlock">
                                <Setter Property="Opacity" Value="0"/>
                                <Style.Triggers>
                                    <DataTrigger Binding="{Binding ElementName=MyTextbox,Path=Text}" Value="">
                                        <Setter Property="Opacity" Value="0.2"/>
                                    </DataTrigger>
                                </Style.Triggers>
                            </Style>
                        </TextBlock.Style>
                    </TextBlock>
                </Border>
            </VisualBrush.Visual>
        </VisualBrush>
    </TextBox.Background>
</TextBox>
后台CS:
    /// <summary>
    /// TipTextbox.xaml 的交互逻辑
    /// </summary>
    public partial class TipTextbox : TextBox
    {
        public TipTextbox()
        {
            InitializeComponent();
        }

        public string TipText
        {
            get { return (string)GetValue(TipTextProperty); }
            set { SetValue(TipTextProperty, value); }
        }

        public static readonly DependencyProperty TipTextProperty =
            DependencyProperty.Register("TipText", typeof(string), typeof(TipTextbox), new PropertyMetadata(""));
    }
引入命名空间

xmlns:uc="clr-namespace:CallCenter.UserControl"

使用自定义用户控件

<uc:TipTextbox TipText="请输入账号" />

运行效果

WPF实现TextBox水印效果第1张

免责声明:文章转载自《WPF实现TextBox水印效果》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇诛仙手游兽神坐标php5.6安装下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

wpf 制作播放视频的屏保程序、而且能分屏显示

     这个程序用到了WPF里  “visual_Brush”(主要是为了实现分屏显示) , “UserControl” ,这两个知识点;   在屏保状态下播放指定文件夹下的视频,而且能分屏显示;   把编译好的屏保程序(原本是.exe)改名为.SCR 放到C:WindosSystem32下    现在就可以设置为屏保了:譬如win7系统的 在桌面属性→...

WPF入门-使用C#创建简单应用

本文,你将熟悉在使用VS2019开发应用程序时可使用的许多工具、对话框和设计器。将创建一个“Hello World”应用程序、UI设计器、添加代码并调试错误。 先决条件: 安装Visual Studio 2019(16.3或者更高版本)。本文环境是16.8 一、创建项目   1、打开VS2019,   2、在‘开始’窗口,选择‘创建新项目’:      3...

C#后台实现在Grid标签中动态新增CheckBox标签(WPF中)

页面代码 1 <Grid Margin="45,0,10,0" > 2 <Grid.RowDefinitions> 3 <RowDefinition Height="*"/> 4 <RowDef...

WPF中MVVM模式下的按钮事件实现和依赖项通知

自从上一次写MVVM入门到现在,又过了好长时间了,一直想着把事件的绑定总结一下,但是一来是认识的不够,感觉讲不清楚;二来是懒。不管了,写的不对的地方大家提一下,错误要是不暴露它就一直是错误。先说按钮的事件绑定,.net中提供的ICommand就是这么用的,自己写一个command的基类,继承ICommand,实现ICommand的3个方法,最简单的实现:...

SVG初识

SVG 意为可缩放矢量图形(Scalable Vector Graphics) 个人认为现在svg可能有点过时了,svg的很多功能css3或者canvas都能做到很好的效果, 但是刚刚研究了一下还是看到了一些很实在的写法。 优势: SVG 图像可通过文本编辑器来创建和修改 SVG 图像可被搜索、索引、脚本化或压缩 SVG 是可伸缩的 SVG 图像可在任何...

【WPF学习】第五十二章 动画性能

  通常,为用户界面应用动画只不过是创建并配置正确的动画和故事板对象。但在其他情况下,特别是同时发生多个动画时,可能需要更加关注性能。特定的效果更可能导致这些问题——例如,那些涉及视频、大位图以及多层透明等的效果通常需要占用更多CPU开销。如果不谨慎实现这类效果,运行它们使可能造成明显抖动,或者会从其他同时运行的应用程序抢占CPU时间。   幸运的是,WP...