【问题标题】:ToolTip doesn't work on WPF Run object工具提示不适用于 WPF 运行对象
【发布时间】:2015-02-27 00:14:29
【问题描述】:

这是代码:

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

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

编辑: 如果我以编程方式(在 Window 的构造函数中)设置 GlobalBorder.IsEnabled = false 而不是使用 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 禁用边框时,工具提示才起作用。

【问题讨论】:

  • 尝试GlobalBorder.SetValue(Border.IsEnabledProperty, false); 如果不起作用,请输入您的插入代码
  • 你能贴出你用来插入Run对象的代码吗?

标签: c# wpf


【解决方案1】:

看看hereIsEnabled 属性设置为 false 的 UIElement,不参与命中测试或焦点,因此不会成为输入事件的来源 - 无论您是否在 XAML 或代码中设置属性。

您的Run 对象位于禁用控件中,因此它们不会引发MouseEnter 事件,并且它们的工具提示不会变得可见。如果你想有工具提示,你应该考虑使用RichTextBoxReadOnly 属性而不是Border 元素的IsEnabled 属性。

【讨论】:

  • 问题是当我启用边框元素时工具提示不可见。
  • 对不起,我不明白你的意思。 Visibility 是一个依赖属性,所以 何时 你改变它并不重要。 IsEnabled 属性具有相同的行为。
  • 最初边框被禁用(在 xaml 代码中),然后我启用它并在 RichTextBox 中插入一些运行对象(使用工具提示)。结果:工具提示不可见。如果我做同样的事情,但在窗口的构造函数中以编程方式设置“GlobalBorder.IsEnabled = false”,它就可以工作(工具提示是可见的)。
  • 你能把这两种情况的代码贴出来吗(第一种在 XAML 中边框禁用,第二种在构造函数中使用GlobalBorder.IsEnabled = false)?
【解决方案2】:

您可以尝试将ToolTipService.ShowOnDisabled 放在边框元素中:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-27
    • 1970-01-01
    • 1970-01-01
    • 2015-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多