不确定这里在做什么,但绑定(bind)适用于数据模板中的标签,但不适用于工具提示。任何帮助将不胜感激。
<DataTemplate DataType="Label">
<StackPanel Orientation="Horizontal" HorizontalAlignment="Left">
<StackPanel.ToolTip>
<ToolTip DataContext="{Binding Path=PlacementTarget,
RelativeSource={x:Static RelativeSource.Self}}">
<TextBlock Text="{Binding Path=DataContext.Description}" />
</ToolTip>
</StackPanel.ToolTip>
<Image Source="{StaticResource ApplicationInfoS}"
Margin="0 0 5 0" Stretch="None"
HorizontalAlignment="Left" />
<Label Style="{StaticResource lblTextContent}"
Padding="5 0 0 0"
Content="{Binding Path=DataContext.Description, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListViewItem}}}"/>
</StackPanel>
</DataTemplate>
顺便说一句,DataTemplate 在 Listview 中使用。 “描述”属性存在于绑定(bind)到 ListView 的 View 模型上。
我在 VS2010 的输出窗口中得到的消息是:
System.Windows.Data 错误:39:BindingExpression 路径错误:在“对象”“字符串”(HashCode=-466763399) 上找不到“描述”属性。 BindingExpression:Path=DataContext.Description; DataItem='StackPanel' (Name='');目标元素是“TextBlock”(名称='');目标属性是“文本”(类型“字符串”)
更新
我暂时放弃了。暂时使用以下 hack:
将标签添加到 StackPanel 并为其绑定(bind)“描述”
<StackPanel Orientation="Horizontal" HorizontalAlignment="Left" Tag="{Binding Path=DataContext.Description, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListViewItem}}}">
将工具提示绑定(bind)到标签。是的,这是一个 hack,但它有效。
<StackPanel.ToolTip>
<ToolTip DataContext="{Binding Path=PlacementTarget, RelativeSource={x:Static RelativeSource.Self}}">
<TextBlock Text="{Binding Path=Tag}" />
</ToolTip>
</StackPanel.ToolTip>
干杯
迈克
最佳答案
工具提示不需要相对源绑定(bind)。在没有数据上下文绑定(bind)的情况下试试这个
<StackPanel.ToolTip>
<ToolTip Content={Binding Description} />
<StackPanel.ToolTip>
这是假设此 DataTemplate 所基于的 Label 类型具有一个名为 Description 的属性。在某些情况下,您可能需要绑定(bind)到 PlacementTarget 的少数情况之一是使用 ContextMenu 控件。
关于c# - WPF 绑定(bind)到工具提示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4083969/