c# - WPF 绑定(bind)到工具提示

标签 c# wpf xaml binding

不确定这里在做什么,但绑定(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/

相关文章:

c# - C#中并发安全自定义数据类型的实现

c# - 数据上下文中具有 Prism 和 XAML 绑定(bind) View 的 Master Detail MVVM

具有静态数据的 C# 函数

c# - WPF 中的图像变得模糊

c# - Xamarin.Forms ListView 删除项目保留旧值

c# - C# WPF 应用程序中的动态折线图

C# word 自动查找和替换长文本字段

c# - WPF如何将自己的对象暴露给其他窗口

c# - 在使用 XAML Islands 的 WPF 应用程序中托管 UWP 控件的 Windows 10 真正最低支持版本是什么?

c# - 如何在 WPF ComboBox 中使用 MultiBinding