【问题标题】:WPF binding to Ancestor SourceWPF 绑定到祖先源
【发布时间】:2013-03-18 11:55:35
【问题描述】:

我正在尝试显示带有悬停图像但尺寸不同的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 这样的问题的其他解决方案,因为我只是想练习我的绑定技巧,谢谢。

【问题讨论】:

  • 那么您的调试窗口中的BindingExpression 错误是什么?
  • @DHN,从没听说过这种事,我怎么看?
  • 如果您查看 Visual Studio 的调试输出窗口(VS > 调试 > Windows > 输出),您会看到很多输出。 BindingExpression 错误也会出现在那里。这并不多,但您会知道可能出了什么问题。
  • @DHN, “找不到源...” 确实不多。无论如何,谢谢。
  • 跟踪绑定错误的另一件事是:您可以为绑定提供一个标志,以使调试输出提供更多信息。 '{Binding Path=Something, PresentationTraceSources.TraceLevel=High}'

标签: c# .net wpf binding tooltip


【解决方案1】:

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

<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>

【讨论】:

  • 没有帮助,说实话,我不明白为什么它应该有。
  • 好的,然后尝试一些完全不同的东西。我认为它不起作用,因为RelativeSource 找不到图像,因为它不是逻辑父级。我更新我的答案,看看是否有效。
  • 实际上不,我确信它有效,因为我们做了类似的事情。我现在正在测试它,因为现在我上瘾了 :)
  • @makc 抱歉,这是我的错。当我的回答出错时,他评论了我的回答。我完全改变了它,不幸的是,这使得 cmets 脱离了上下文。 ://
  • @Makc & dowhilefor。让我们删除我们的 cmets。
猜你喜欢
  • 2011-03-25
  • 2012-07-31
  • 2011-10-13
  • 1970-01-01
  • 2020-11-07
  • 2019-06-09
  • 2017-03-21
  • 2011-01-05
  • 2015-04-14
相关资源
最近更新 更多