3

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 プロパティが含まれています。TooltipService.ToolTipの代わりに, を使用してみましたがBorder.ToolTip、効果はありません。違いは何ですか? また、バインディングが機能しないのはなぜですか?

4

1 に答える 1