【发布时间】:2011-02-02 12:31:35
【问题描述】:
我正在尝试在Background 中设置一个简单的TextBox 和一些水印文本。我的代码基于Philip Patrick's blog 中的示例。
我正在尝试对其进行调整,以便从 TextBox 的 ToolTip 属性中检索背景中显示的文本。
目前可行:
<TextBox ToolTip="Type a name here...">
<TextBox.Background>
<VisualBrush TileMode="None" Opacity="0.4" Stretch="None" AlignmentX="Left">
<VisualBrush.Visual>
<TextBlock FontStyle="Italic" Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type TextBox}}, Path=ToolTip}"/>
</VisualBrush.Visual>
</VisualBrush>
</TextBox.Background>
</TextBox>
这会在TextBox 的Background 中显示ToolTip 文本。
但如果我将部分代码移出资源样式,绑定将不再从TextBox 获取ToolTip 信息:
<Grid>
<Grid.Resources>
<Style x:Key="WatermarkBackground" TargetType="{x:Type TextBox}">
<Setter Property="Background">
<Setter.Value>
<VisualBrush TileMode="None" Opacity="0.4" Stretch="None" AlignmentX="Left">
<VisualBrush.Visual>
<TextBlock FontStyle="Italic" Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type TextBox}}, Path=ToolTip}"/>
</VisualBrush.Visual>
</VisualBrush>
</Setter.Value>
</Setter>
</Style>
</Grid.Resources>
<TextBox ToolTip="Type your name here..." Style="{StaticResource WatermarkBackground}"/>
这里有什么提示吗?
【问题讨论】:
-
能否使用模板代替样式,以便使用 {Binding RelativeSource={RelativeSource TemplatedParent}, Path=ToolTip}?