绑定到工具提示内的UserControl属性不起作用

时间:2010-06-24 10:09:17

标签: c# wpf tooltip binding dependency-properties

我正在尝试对usercontrol中的属性进行一些简单的绑定。有谁知道为什么这不起作用?它在TextBlock位于Tooltip之外时有效。

谢谢!

MasterPage.cs:

MyUserControlInstance.DisplayName = "Test";

MyUserControl.xaml

<ToolTipService.ToolTip>
    <ToolTip Template="{StaticResource ToolTipTemplate}">
        <StackPanel>
            <TextBlock Text="{Binding ElementName=UserControl, Path=DisplayName}" />
        </StackPanel>
    </ToolTip>
</ToolTipService.ToolTip>

MyUserControl.cs

public static DependencyProperty DisplayNameProperty = DependencyProperty.Register("DisplayName", typeof(string), typeof(MyUserControl));
public string DisplayName
{
    get { return (string)GetValue(DisplayNameProperty); }
    set { SetValue(DisplayNameProperty, value); }
}

3 个答案:

答案 0 :(得分:4)

Tooltip具有PlacementTarget属性,该属性指定具有Tooltip

的UI元素
<TextBlock.ToolTip> 
    <ToolTip  
         DataContext="{Binding Path=PlacementTarget, RelativeSource={x:Static RelativeSource.Self}}"  
        <TextBlock Text="{Binding Text}">  <!-- tooltip content --> 
     </ToolTip> 
</TextBlock.ToolTip> 

答案 1 :(得分:1)

工具提示本身被认为是一个控件,因此无法看到它的直接父级。它内部的绑定无法访问UserControl元素,因为它对它一无所知。有关此问题的几种解决方案,请参阅here

答案 2 :(得分:1)

元素到元素绑定不适用于工具提示,因为工具提示有自己的元素树。 Here是一种方法