我正在尝试绑定ListBoxItem的工具提示。 我在ControlTemplate中定义了这个:
<ControlTemplate TargetType="{x:Type ListBoxItem}">
<ControlTemplate.Resources>
<conv:IconConverter x:Key="IconConverter" />
<conv:FirstImageConverter x:Key="FirstImageConverter"/>
<conv:DebugConverter x:Key="dbg"/>
</ControlTemplate.Resources>
<Border ...>
<StackPanel>
<Image MaxHeight="160" Stretch="UniformToFill" Source="{Binding Icon,Converter={StaticResource IconConverter},ConverterParameter=128}" Height="128"/>
<TextBlock x:Name="lblName" Text="{Binding Name}" />
</StackPanel>
<Border.ToolTip>
<DockPanel LastChildFill="True" Margin="2" MaxWidth="800"
DataContext="{Binding Images,Converter={StaticResource FirstImageConverter}}"
IsEnabled="{Binding Images,Converter={StaticResource FirstImageConverter},ConverterParameter=enabled}">
<TextBlock DockPanel.Dock="Bottom" Width="Auto" MaxWidth="600" Text="{Binding Caption}" Height="Auto" />
<Image x:Name="imgFullSize" DockPanel.Dock="Top" Stretch="None" Width="Auto" Source="{Binding Filename,Converter={StaticResource IconConverter}}"/>
</DockPanel>
</Border.ToolTip>
我遇到了一个绑定错误:System.Windows.Data Error: 3 : 找不到提供 DataContext 的元素。BindingExpression:Path=Images; DataItem=null; target element is 'DockPanel' (Name=''); target property is 'DataContext' (type 'Object')
我的 ListBoxItem 的 DataContext 包含了 images 属性,同时也包含了 name 和 icon 属性,这两个属性都能正确地显示出来。我还尝试过使用 TooltipService.ToolTip
代替 Border.ToolTip
,但没有任何效果。这两者有什么区别,为什么我的绑定不起作用呢?