Вы уверены, что ToolTipService.GetToolTip
возвращает ноль, в отличие от возврата чего-то отличного от ToolTip
?
Я провел быстрый эксперимент с кодом, похожим на ваш, и обнаружил, что ToolTipService.GetToolTip
вернул строку. Я, конечно, связывал ToolTipService.ToolTip
со свойством зависимости от строки. Я подозреваю, что вы также получаете строку обратно от GetToolTip
, но as ToolTip
, который вы добавили после вызова этого метода, обнуляет эту строку.
Один из способов программно отключить всплывающую подсказку - привязать ее к свойству модели представления, которое содержит текст всплывающей подсказки, если подсказка должна отображаться, или ноль, если подсказка не должна отображаться.
В качестве альтернативы, вы можете использовать ToolTip
вместо строки в качестве всплывающей подсказки для вашего элемента управления. Таким образом вы сможете получить доступ к объекту ToolTip
и включить / отключить его в приведенном выше коде:
<Image x:Name="PART_IconImage" Stretch="None" VerticalAlignment="Top" HorizontalAlignment="Center" Source="{TemplateBinding Icon}">
<ToolTipService.ToolTip>
<ToolTip>
<TextBlock Text="{TemplateBinding Caption}" />
</ToolTip>
</ToolTipService.ToolTip>
</Image>