使用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
。
步骤2)找到并添加dll文件WPFToolkit.Extended.dll
。
步骤3)最后您需要添加XAML
代码。
这里的关键是添加对dll文件的reference
。
xmlns:extToolkit="http://schemas.xceed.com/wpf/xaml/toolkit"
然后你可以像这样简单地在XAML
使用它。