如何获取此代码段中的TextBlock Text属性?

时间:2011-03-18 09:56:26

标签: wpf

<TextBlock Text="Hi I am Parent Tooltip" Grid.Row="2" >
        <TextBlock.ToolTip>
            <ToolTip >
                <!--<TextBlock x:Name="test" Text="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type TextBlock},AncestorLevel=2},Path=Name}"> </TextBlock>-->
                <TextBlock Text="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type TextBlock},AncestorLevel=2},Path=Text}"></TextBlock>
            </ToolTip>
        </TextBlock.ToolTip>
    </TextBlock>

4 个答案:

答案 0 :(得分:4)

        <TextBlock Text="Hi I am Parent Tooltip" Grid.Row="2" >
        <TextBlock.ToolTip>
            <ToolTip DataContext="{Binding Path=PlacementTarget, RelativeSource={x:Static RelativeSource.Self}}">
                 <TextBlock TextWrapping="Wrap"  Text="{Binding Text}"/>  <!-- tooltip content -->
            </ToolTip>
        </TextBlock.ToolTip> 
    </TextBlock>

答案 1 :(得分:1)

<TextBlock x:Name="textBlock" Text="Hi I am Parent Tooltip" Grid.Row="2" >
        <TextBlock.ToolTip>
            <ToolTip >
                <TextBlock x:Name="toolTip" Text="{Binding Path=Text, ElementName=textBlock}"></TextBlock>
            </ToolTip>
        </TextBlock.ToolTip>
    </TextBlock>

修改:在上面的工具提示TextBlock中添加了一个名称。然后将以下代码添加到后面的代码中(在构造函数中):

NameScope.SetNameScope(toolTip, NameScope.GetNameScope(this));

这应该有效。

答案 2 :(得分:0)

您可以命名文本框并使用ElementName

进行绑定

您还可以将datacontext设置为对象,并将此文本作为属性(mvvm是您的朋友?)

答案 3 :(得分:0)

这可能是.Net 4.0的新功能,但这对我有用:

<TextBox Text="{Binding SelectedHour}" ToolTip="{Binding Path=Text, RelativeSource={x:Static RelativeSource.Self}}" />