ToolTip不适用于WPF Run对象

时间:2015-01-23 15:08:33

标签: c# wpf

这是代码:

<Border x:Name="GlobalBorder" IsEnabled="False">
    <RichTextBox/>
</Border>

当我点击一个按钮时,我会GlobalBorder.IsEnabled = true,它可以正常工作。 之后,我以编程方式在RichTextBox中插入一些Run对象。 问题是Run对象的工具提示不起作用。 但是,如果我删除xaml行IsEnabled="False"工具提示工作。 附:我在启用边框之前,之后添加了Run对象。

编辑: 如果我以编程方式设置GlobalBorder.IsEnabled = false(在Window的构造函数中)而不是使用xaml,工具提示工作! 这对我来说是一个谜!

我以这种方式添加Run对象:

FlowDocument document = TargetTextBox.Document;
Paragraph paragraph = document.Blocks.ElementAt(0) as Paragraph;
Run itemText = new Run("$" + componente.ItemComponente.IdComponenteTN.ToString() + "$");
itemText.ToolTip = componente.ItemComponente.Descrizione;
paragraph.Inlines.Add(itemText);

但是,正如我所说,只有禁用带有xaml的Border,工具提示才能起作用。

2 个答案:

答案 0 :(得分:1)

看一下here:在{h}中将IsEnabled属性设置为false,不参与的UIElements,因此不会成为输入事件的来源 - 无论您是在XAML中还是在代码中设置属性。

您的Run个对象位于已禁用的控件中,因此它们不会引发MouseEnter事件,并且其工具提示无法显示。如果您想要工具提示,则应考虑使用ReadOnly的{​​{1}}属性,而不是RichTextBox元素的IsEnabled属性。

答案 1 :(得分:0)

您可以尝试将ToolTipService.ShowOnDisabled放入Border元素:

<Border x:Name="GlobalBorder"
        IsEnabled="False"
        ToolTipService.ShowOnDisabled="True">
    <RichTextBox/>
</Border>