使用XAML使“默认”文本显示在没有焦点的空TextBox中

我想创建一个TextBox,如果是的话,它会出现一个灰色的“默认”文本

a)空的

b)失去了焦点

当用户进入文本框时,灰色的“默认”文本应该消失。

我试图使用ControlTemplate.Triggers做到这一点,但我似乎无法找到HasFocus属性。

使用XAML的最佳方法是什么?

虽然重新发明轮子没有任何实际好处,但看看如何做到这一点可能会很有趣。 最简单的方法(在纯XAML中)是为TextBox创建一个ControlTemplate ,当TextBlock没有聚焦并且不包含文本时,它会覆盖TextBlock

                

MultiTrigger表示“如果Text属性为空并且TextBox没有键盘焦点,则将Visibility设置为Visible”

如果你想让它更可重用,那么你可以用它作为默认模板创建一个自定义控件,并使用包含提示信息的Dependency属性

您可以简单地使用Extended WPF Toolkit的WatermarkTextBox 。 在此处输入图像描述

我根据您对如何在项目中添加和使用库的评论撰写了一个小指南。

步骤1)右键单击项目中的“ References ,然后选择“ Add Reference

步骤1

步骤2)找到并添加dll文件WPFToolkit.Extended.dll

第2步

步骤3)最后您需要添加XAML代码。

      

这里的关键是添加对dll文件的reference

 xmlns:extToolkit="http://schemas.xceed.com/wpf/xaml/toolkit" 

然后你可以像这样简单地在XAML使用它。