J'ai un style que j'utilise pour créer des infobulles dynamiques sur certaines zones de texte.Styles et info-bulles WPF Question
<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>
Cela fonctionne très bien, mais si je veux utiliser une infobulle plus complexe que je ne peux pas comprendre comment lier à « Tag » plus la valeur du convertisseur. Par exemple;
...
<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>
...
J'ai essayé plusieurs saveurs de « FindAncestor » et ce pas la source relative, mais je ne peux pas trouver quelque chose à travailler. Des idées??
MISE À JOUR: 12-29-2010: Voici le code correct, réponse fournie par notre ami Goblin ci-dessous. Fonctionne parfaitement!
...
<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>
...
MISE À JOUR: Il semble que le convertisseur n'est pas appelé dans cet arrangement, peu importe ce que je définis la valeur de liaison. Toutefois, aucune exception n'est signalée par l'application lorsqu'elle est en cours d'exécution. Cela ne fait qu'ajouter au mystère. –
Pas vraiment - c'est parce que le DataContext du TextBlock est nul - d'où la liaison est 'dormant' jusqu'à ce qu'un DataContext soit défini. – Goblin