Avalonia如何实现一个带水印的TextBox Avalonia水印提示

来源:这里教程网 时间:2026-02-21 17:34:30 作者:

在 Avalonia 中实现带水印(Placeholder)的

TextBox
,最简单可靠的方式是使用内置的
Watermark
属性 —— 它专为此场景设计,无需自定义控件或模板。

直接使用 Watermark 属性

Avalonia 的

TextBox
原生支持
Watermark
属性,会在文本为空且未获得焦点时显示提示文字,获得焦点或输入内容后自动隐藏,行为符合主流 UI 习惯。

支持字符串、
TextBlock
或任意控件(如带图标+文字的组合)
样式可全局或局部定制(例如颜色、字体大小),默认使用
ThemeAccentBrush
的淡色变体
无需绑定、触发器或代码逻辑,开箱即用

示例 XAML:




  
    
      
      
    

  

自定义水印样式(可选)

若需调整水印颜色、字体或动画效果,可通过

TextBox.WatermarkTemplate
或重写主题资源。常用方式是覆盖
TextBox.WatermarkForeground
资源:


  
    
  

注意与 WPF/UWP 的区别

Avalonia 的

Watermark
不是附加属性,而是
TextBox
的直系依赖属性;它不依赖
IsFocused
Text.Length
手动控制,内部已封装状态逻辑。避免以下常见误区:

不要用
Visibility
绑定模拟水印(破坏原生交互和可访问性)
不要监听
GotFocus
/
LostFocus
手动切换(干扰默认行为)
Watermark
内容不会被提交到
Text
属性,也不参与数据验证

多语言与绑定支持

Watermark
支持绑定和资源引用,适合本地化场景:


确保绑定源实现

INotifyPropertyChanged
,资源字典按文化正确加载即可。

相关推荐