Montrer WPF info-bulle si nécessaire
J'ai un TextBlock à l'intérieur d'une taille limitée de contrôle. Si le texte est trop long pour tenir dans le contrôle, j'aimerais afficher une info-bulle avec le texte intégral. C'est un classique de comportement, vous le savez sûrement de nombreuses applications.
J'ai essayé d'utiliser un Convertisseur pour convertir TextBlock largeur dans l'info-bulle de la Visibilité.
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Text}">
<TextBlock.ToolTip>
<ToolTip
DataContext="{TemplateBinding Content}"
Visibility="{Binding Converter={StaticResource visConvert}}">
<TextBlock Text="{Binding Text}"></TextBlock>
</ToolTip>
</TextBlock.ToolTip>
</TextBlock>
</DataTemplate>
</GridViewColumn.CellTemplate>
Le problème est que dans le Convertisseur:
public object Convert(object value, ...
"valeur" est lié aux données de l'élément. J'aimerais que la "valeur" d'être le TextBlock, pour observer sa Largeur, et de la comparer à la GridViewColumn.La largeur.
Vous devez vous connecter pour publier un commentaire.
J'ai tout compris, l'encadré d'aide a PlacementTarget propriété qui spécifie l'élément de l'INTERFACE utilisateur qui a l'info-bulle. Dans le cas où quelqu'un en a besoin:
Puis d'écrire un Convertisseur qui convertit TextBlock à la Visibilité (basé sur TextBlock largeur).
Ok, alors pourquoi le faire à la dure XAML seule? Cela fonctionne:
dans le Contrôle.xaml.cs:
Je pense que vous avez à regarder un ControlTemplate déclencheur pour résoudre ce problème. Malheureusement ControlTemplate déclenche toujours comparer avec une valeur spécifique, pas plus ou moins grande qu'. Vous pouvez la faire apparaître par exemple, si la Largeur = 100, pas de Largeur < 100.