我正在尝试绑定 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 : Cannot find element that provides 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
,但没有效果。有什么区别,为什么我的绑定不起作用?