http://luacloud.com/2011/wpf-textbox-clearbutton-watermark.html
带水印,带清除按钮的TextBox
先发个牢骚!!!NND,一个上午都毁在Text属性上了!!!
我就是打算做一个带有清除按钮的文本框,这样,我写好了样式,可以在别的地方通用,省去了每个都到后台写清空代码的麻烦。
于是,参照这昨天写的 《WPF-没事做了个圆角文本框,并且右侧有控件》我就写了一个样式,可是一个上午,就一直在找怎么才能清空内容。一直都不得其法,后来无奈只能也靠后台去写,果然是没有完美的事情啊。
但是出了个意外,就是,当我在其他文本框上面应用样式的时候,这个怪事就是。。。文本框中的内容变成了我最开始写样式时写的Text的内容,这个效果就是,一共三个文本框,两个是可以更改Text内容,而一个不能更改。
我仔细看了一下,发现,原来是调用样式的<TextBox Style="{...}" Text=""/> 问题就出在了这个Text属性上。
当控件生成时,如果Text有值,无论是不是空值,那么在Style样式中<Setter Property="Text" Value=""/>是会失效的。所以如果要让其生效,那么不可以设置控件的Text属性
样式代码:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
<Style
x:Key="ClearButtonTextBox"
TargetType="{x:Type TextBox}">
<Setter
Property="TextAlignment"
Value="Center"/>
<Setter
Property="VerticalContentAlignment"
Value="Center"/>
<Setter
Property="Template">
<Setter.Value>
<ControlTemplate
TargetType="{x:Type TextBox}">
<Border
CornerRadius="0"
BorderBrush="Silver"
BorderThickness="1"
Padding="0,0,5,0"
Background="{TemplateBinding Background}">
&nbs
|

本文介绍了如何在WPF中创建一个具备清除按钮和水印效果的TextBox。作者在尝试实现这个功能时遇到了Text属性的问题,导致样式无法正常应用。最终发现,当TextBox的Text属性被设置时,样式中的Text Setter会失效。为了解决这个问题,必须避免在控件上直接设置Text属性,以确保样式能够正确显示清除按钮和水印。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



