我实际上是覆盖默认WPF TextBox的ControlTemplate,我想为其添加一个Title。这里的想法是,当TextBox为空且未聚焦时,标题将显示为占位符,在其他情况下,标题将在顶部滑动以成为标题。
由于TextBox没有PlaceHolder或Title属性,我认为我可以将标题TextBlock绑定到ToolTip以便能够做到这一点:
<TextBox ToolTip="MyTextBoxTitle"/>
我的模板如下:
<ControlTemplate TargetType="{x:Type TextBox}">
<Border x:Name="border" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" SnapsToDevicePixels="True">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="14"/>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<TextBlock x:Name="Title" Text="{Binding Path=ToolTip}" Margin="8,14,0,0" Grid.Row="0" Grid.RowSpan="2" Foreground="{StaticResource TextBox.Static.Border}"></TextBlock>
<ScrollViewer x:Name="PART_ContentHost" Focusable="false" HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Hidden" Grid.Row="1"/>
<Rectangle x:Name="UnfocusedUnderLine" Fill="{StaticResource TextBox.Static.Border}" Height="6" Margin="0,1,0,0" Grid.Row="2"/>
<Rectangle x:Name="UnderLine" Fill="{StaticResource TextBox.Focus.Border}" Height="6" Margin="0,1,0,0" Grid.Row="2" Width="0"/>
</Grid>
</Border>
<ControlTemplate.Triggers>
...
</ControlTemplate.Triggers>
</ControlTemplate>
但是我在ToolTip上的绑定不起作用,而且我无法设法找到一种使之起作用的方法,您知道如何做到这一点吗?
答案 0 :(得分:1)
使用:
Text="{TemplateBinding ToolTip}"
您需要一个绑定,其来源不是DataContext
,而是源于您的情况的模板元素TextBox
。