prelude38
prelude38

Reputation: 119

Making a ToolTip not visible

There is an icon that I want to always be visible, but I want the tooltip to be conditionally visible. Here is the code that I currently have:

<TextBlock Grid.Row="2"
    Grid.Column="0"
    VerticalAlignment="Center"
    FontSize="15"
    Visibility="{Binding IsConnected, Converter={StaticResource BooleanToVisibilityConverter}}">
    <fa:ImageAwesome Icon="{Binding Path=BatteryLevelIcon, UpdateSourceTrigger=PropertyChanged}"
        Height="20"
        Width="20"
        Foreground="Green"
        Visibility="{Binding IsConnected, Converter={StaticResource BooleanToVisibilityConverter}}" />
     <ToolTipService.ToolTip>
         <TextBlock Visibility="{Binding IsCharging, Converter={StaticResource InvertedBooleanToVisibilityConverter}}">
             <TextBlock.Text>
                   <MultiBinding StringFormat="{}{0}%">
                        <Binding Path="BatteryPercentage" />
                   </MultiBinding>
             </TextBlock.Text>
         </TextBlock>
     </ToolTipService.ToolTip>
</TextBlock>

So, I want the tooltip to only show up when IsCharging is false. The issue that I am having is that because the Visibility property is on the tooltip textblock instead of the tooltip itself, setting it to not visible only gives me a empty tooltip, instead of the tooltip not appearing at all. I have tried defining the content of the tooltip (textblock) in UserControls.Resources and then setting the textblock and IsEnabled, but it gave me the error:

a value of type tooltipservice cannot be added to a collection or dictionary of type inlinecolection

It doesn't seem there is an easy way to set the visibility for the tooltip. If anyone has any suggestions it would be greatly appreciated!

Upvotes: 1

Views: 259

Answers (1)

Anu Viswan
Anu Viswan

Reputation: 18155

You could use ToolTipService.IsEnabled property for the purpose

ToolTipService.IsEnabled="{Binding IsToolTipVisible}" 

Where IsToolTipVisible Where is the View Model property which dictates where to enable the tooltip

Complete Code

<TextBlock Grid.Row="2" ToolTipService.IsEnabled="{Binding IsToolTipVisible}" 
    Grid.Column="0"
    VerticalAlignment="Center"
    FontSize="15"
    Visibility="{Binding IsConnected, Converter={StaticResource BooleanToVisibilityConverter}}">
    <fa:ImageAwesome Icon="{Binding Path=BatteryLevelIcon, UpdateSourceTrigger=PropertyChanged}"
        Height="20"
        Width="20"
        Foreground="Green"
        Visibility="{Binding IsConnected, Converter={StaticResource BooleanToVisibilityConverter}}" />
     <ToolTipService.ToolTip>
         <TextBlock>
             <TextBlock.Text>
                   <MultiBinding StringFormat="{}{0}%">
                        <Binding Path="BatteryPercentage" />
                   </MultiBinding>
             </TextBlock.Text>
         </TextBlock>
     </ToolTipService.ToolTip>
</TextBlock>

Upvotes: 1

Related Questions