3 行 XAML 实现的水印 TextBox
另一个例子,展示了 XAML 如何解决大多数开发人员自动认为需要“编码”才能解决的问题。
引言
发布的示例演示了如何在 WPF 中创建 WatermarkTextBox
,包括 Kevin Moore 广受欢迎的 “Bag-O-Tricks” 示例库 中的 'InfoTextBox
' 控制,似乎总是需要大量的代码隐藏,而一个完全可用的版本只需三行 XAML 代码即可构建,利用 WPF 内置的 BooleanToVisibilityConverter
。

完整的项目包含这种功能的两个变体。

这个例子源于最近一次 .NET 用户组会议上的讨论,几位经验丰富的 WPF 开发人员抱怨最新版本的 Silverlight 中删除了 WatermarkTextBox
控制。他们都得出了结论(我认为这在开发人员中很常见),即支持类似的功能需要“编码”某种自定义控件。
虽然这只是一个简单的例子,但我认为相关的关于何时使用 XAML 与代码(以及,正如我的第二个例子可能所示,何时开始通过标记进行“黑客”操作)的问题,将在许多实际的多开发人员项目中引发一些有趣的 XAML 相关最佳实践辩论——尤其是在面对大型代码库的第三个开发周期时,出现看似随机的实现选择的混乱局面。
更新:微软 宣布将在未来的 Silverlight 版本中向 TextBox
添加一个“WaterMark
”属性,并已提供原始的 WatermarkTextBox
代码供下载。