WPF绑定到Ancestor Source

时间:2013-03-18 11:55:36

标签: c# .net wpf binding tooltip

我正在尝试使用悬停的图片显示ToolTip,但尺寸不同。

我试过了:

<Image Source="c:\Pictures\Airplane.jpg" Width="50" Height="50">
    <Image.ToolTip>
        <Image Width="300" Height="300" 
               Source="{Binding Path=Source, RelativeSource={RelativeSource AncestorType=Image, AncestorLevel=1}}
    </Image.ToolTip>
</Image>

以上在悬停时会产生更大的图像,但图像内容为空白,可能是绑定不起作用。

下班后我想我需要帮助......我错过了什么?

<子> 我不想像this answer这样的问题的其他解决方案,因为我只是尝试练习我的绑定技能,谢谢。

1 个答案:

答案 0 :(得分:3)

好的,我得到它的工作,我最初的想法是正确的:RelativeSource将无法工作,因为工具提示不是可视树的一部分。我认为ElementName会起作用,但似乎WPF创建了某种新的名称范围镜(不确定)。因此,让它工作的唯一方法是在两个可视树之间使用DataContext作为“代理”。您还可以使用具有正确信息的viewmodel。

<Image x:Name="myImage" Source="c:\Pictures\Airplane.jpg" DataContext="{Binding RelativeSource={RelativeSource Self}}" Width="50" Height="50">
    <Image.ToolTip>
        <Image Width="300" Height="300" Source="{Binding Path=Source}"/>
    </Image.ToolTip>
</Image>

enter image description here