Show WPF Tooltip if needed
c#, conditional-statements, tooltip, wpf
Solution
I figured it out, the Tooltip has PlacementTarget property that specifies the UI element that has the Tooltip. In case anyone needs it:
<TextBlock Text="{Binding Text}">
<TextBlock.ToolTip>
<ToolTip
DataContext="{Binding Path=PlacementTarget, RelativeSource={x:Static RelativeSource.Self}}"
Visibility="{Binding Converter={StaticResource toolVisConverter}}">
<TextBlock Text="{Binding Text}"/> <!-- tooltip content -->
</ToolTip>
</TextBlock.ToolTip>
</TextBlock>
And then write a Converter that converts TextBlock to Visibility (based on TextBlock width).
Problem
I have a TextBlock inside a limited-size control. If the text is too long to fit into the control, I'd like to show a tooltip with full text. This is a classic behavior you surely know from many apps. I tried using a Converter to convert TextBlock width into Tooltip's Visibility. ``` <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> ``` The problem is that in the Converter: ``` public object Convert(object value, ... ``` 'value' is the DataBound item. I'd like the 'value' to be the TextBlock, to observe its Width, and compare it to the GridViewColumn.Width.