WPF绑定到工具提示

ozc*_*cho 13 c# wpf xaml binding

不确定这里做了什么,但绑定适用于数据模板中的标签,但不适用于工具提示.任何帮助将不胜感激.

                    <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>
Run Code Online (Sandbox Code Playgroud)

BTW DataView是在Listview中使用的.绑定到列表视图的视图模型上存在"描述"属性.

我在VS2010的输出窗口中收到的消息是:

System.Windows.Data错误:39:BindingExpression路径错误:'object'''String'(HashCode = -466763399)'上找不到'Description'属性.BindingExpression:路径= DataContext.Description; DataItem ='StackPanel'(Name =''); target元素是'TextBlock'(Name =''); target属性是'Text'(类型'String')

UPDATE

我现在已经放弃了.暂时使用以下hack:

将标记添加到StackPanel并将"描述"绑定到它

    <StackPanel Orientation="Horizontal" HorizontalAlignment="Left" Tag="{Binding Path=DataContext.Description, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListViewItem}}}">
Run Code Online (Sandbox Code Playgroud)

将工具提示绑定到标记.是的,黑客,但它的工作原理.

<StackPanel.ToolTip>
  <ToolTip DataContext="{Binding Path=PlacementTarget, RelativeSource={x:Static RelativeSource.Self}}">
    <TextBlock Text="{Binding Path=Tag}" />
  </ToolTip>
</StackPanel.ToolTip>
Run Code Online (Sandbox Code Playgroud)

干杯

麦克风

Ter*_*lis 6

工具提示不需要亲属资源绑定.尝试这一点没有数据上下文绑定

<StackPanel.ToolTip>
    <ToolTip Content={Binding Description} />
<StackPanel.ToolTip>
Run Code Online (Sandbox Code Playgroud)

这假设此DataTemplate所基于的Label类型具有名为Description的属性.您可能需要绑定到PlacementTarget的少数几个实例之一是在某些情况下使用ContextMenu控件.