【发布时间】:2014-03-01 21:24:57
【问题描述】:
我有几个文本框,并希望为每个文本框添加水印(例如:文本框将包含文本“在此处输入名字”,直到您开始输入。)
通常我只会使用 RelativeSource 绑定,但我遇到了一个奇怪的错误,即样式中的 Label 不接受我扔给它的任何绑定。例如,以下 Binding 可以在除标签内容之外的任何地方使用:
{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}, Path=Title}
供参考的是我正在使用的代码。
TextBox 的 XAML:
<TextBox x:Name="textBox_test" Style="{StaticResource textBoxStyle_watermark}" ToolTip="Hello"
样式的 XAML:
<Style x:Key="textBoxStyle_watermark" TargetType="TextBox" xmlns:sys="clr-namespace:System;assembly=mscorlib">
<Style.Resources>
<VisualBrush x:Key="CueBannerBrush" AlignmentX="Left" AlignmentY="Center" Stretch="None">
<VisualBrush.Visual>
<Label Padding="10,0,0,0" Content="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=ToolTip}" Foreground="Gray" />
</VisualBrush.Visual>
</VisualBrush>
</Style.Resources>
<Style.Triggers>
<Trigger Property="Text" Value="{x:Static sys:String.Empty}">
<Setter Property="Background" Value="{StaticResource CueBannerBrush}" />
</Trigger>
<Trigger Property="Text" Value="{x:Null}">
<Setter Property="Background" Value="{StaticResource CueBannerBrush}" />
</Trigger>
<Trigger Property="IsKeyboardFocused" Value="True">
<Setter Property="Background" Value="White" />
</Trigger>
</Style.Triggers>
</Style>
任何帮助将不胜感激,谢谢。
【问题讨论】: