将内部标签文本绑定到组件工具提示

时间:2018-11-29 11:03:42

标签: c# wpf xaml

我实际上是覆盖默认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上的绑定不起作用,而且我无法设法找到一种使之起作用的方法,您知道如何做到这一点吗?

1 个答案:

答案 0 :(得分:1)

使用:

Text="{TemplateBinding ToolTip}"

您需要一个绑定,其来源不是DataContext,而是源于您的情况的模板元素TextBox