私は、特定のテキストボックスに動的なツールチップを作成するために使用しているスタイルを持っています。WPFスタイルとツールチップ質問
<Style TargetType="{x:Type TextBox}">
<Setter Property="MinWidth" Value="100"/>
<Style.Triggers>
<Trigger Property="Validation.HasError" Value="True">
<!-- item of interest -->
<Setter Property="ToolTip">
<Setter.Value>
<MultiBinding Converter="{StaticResource ErrorMessageConverter}">
<Binding RelativeSource="{RelativeSource Self}" Path="Tag"/>
</MultiBinding>
</Setter.Value>
</Setter>
</Trigger>
</Style.Triggers>
</Style>
これは非常にうまく動作しますが、私は、より複雑なツールチップを使用したい場合、私は、コンバータ値のために、もはや「タグ」にバインドする方法を見つけ出すことはできません。例えば;
...
<Setter Property="ToolTip">
<Setter.Value>
<StackPanel>
<TextBlock>
<TextBlock.Text>
<MultiBinding Converter="{StaticResource ErrorMessageConverter}">
<!-- item of interest -->
<Binding RelativeSource=" what goes here?? "/>
</MultiBinding>
</TextBlock.Text>
</TextBlock>
<Image/>
</StackPanel>
</Setter.Value>
</Setter>
...
は私がいない相対ソースのための「FindAncestor」と何のいくつかの味を試してみましたが、私は何も動作させることはできません。何か案は??
更新日:12-29-2010:ここに正しいコード、私たちの友人ゴブリンによって提供される答えです。完璧に動作します!
...
<Setter Property="ToolTip">
<Setter.Value>
<!-- Item of interest -->
<ToolTip DataContext="{Binding Path=PlacementTarget, RelativeSource={x:Static RelativeSource.Self}}">
<StackPanel>
<Image/>
<TextBlock>
<TextBlock.Text>
<MultiBinding Converter="{StaticResource ErrorMessageConverter}">
<Binding Path="Tag"/>
</MultiBinding>
</TextBlock.Text>
</TextBlock>
</StackPanel>
</ToolTip>
</Setter.Value>
</Setter>
...
UPDATE:それはと思われますコンバータは、私が値バインディングを設定していても、この配置で呼び出されていません。ただし、アプリケーションの実行中に例外が報告されることはありません。これは謎にだけ追加されます。 –
これは、TextBlockのDataContextがnullなので、DataContextが設定されるまでバインディングがスリープ状態になるためです。 – Goblin