使工具提示不可见

Making a ToolTip not visible

有一个图标我希望始终可见,但我希望工具提示有条件地可见。这是我目前拥有的代码:

<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>

因此,我希望工具提示仅在 IsCharging 为 false 时显示。我遇到的问题是因为可见性 属性 在工具提示文本块上而不是工具提示本身,将它设置为不可见只会给我一个空的工具提示,而不是工具提示根本不出现。我尝试在 UserControls.Resources 中定义工具提示(文本块)的内容,然后设置文本块和 IsEnabled,但它给了我错误:

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

似乎没有一种简单的方法来设置工具提示的可见性。如果有人有任何建议,将不胜感激!

您可以使用 ToolTipService.IsEnabled 属性

ToolTipService.IsEnabled="{Binding IsToolTipVisible}" 

哪里 IsToolTipVisible 视图模型在哪里 属性 指示在何处启用工具提示

完整代码

<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>