如何修改WPF中PasswordBox占位符文本的前景色?
修改PasswordBox占位符文本前景色的简洁方案?
问题描述
我有如下定义的PasswordBox控件:
<PasswordBox MaxLength="12" PlaceholderText="Password" Foreground="Black" Background="#eeeeee"/>
我想像修改普通TextBox的PlaceholderForeground属性那样修改它的占位符文本前景色,但PasswordBox没有该属性。网上搜索到的方案要么无法生效,要么过于复杂(动辄50行XAML样式和资源),仅修改一个简单属性却要写大量代码。请问是否有无需大量XAML代码的简洁方案?
简洁解决方案
不需要重写完整的PasswordBox模板,直接通过覆盖内置的主题画笔即可实现需求:
在PasswordBox的Resources中定义PasswordBoxPlaceholderForegroundThemeBrush,指定目标颜色即可:
<PasswordBox MaxLength="12" PlaceholderText="Password" Foreground="Black" Background="#eeeeee"> <PasswordBox.Resources> <!-- 替换为你需要的颜色值,如Gray、#666666等 --> <SolidColorBrush x:Key="PasswordBoxPlaceholderForegroundThemeBrush" Color="Gray"/> </PasswordBox.Resources> </PasswordBox>
如果希望全局所有PasswordBox都应用该样式,只需将这个SolidColorBrush定义在页面级或应用级的Resources字典中,无需逐个控件设置。
内容的提问来源于stack exchange,提问作者Irkl1_
相关产品推荐
相关产品推荐

