【发布时间】:2021-01-12 12:51:12
【问题描述】:
我希望将鼠标悬停在应用程序元素上时,工具提示不会显示在弹出窗口中,而是显示在应用程序的 TextBlock 中。我的知识使我能够以这种方式实现它。首先,我使资源提示不可见:
<Style x:Key="{x:Type ToolTip}" TargetType="ToolTip">
<Setter Property="OverridesDefaultStyle" Value="true" />
<Setter Property="HasDropShadow" Value="True" />
</Style>
接下来,我在每个需要提示的元素中编写提示文本和事件:
WPF:
<Button Content="Button"
ToolTip="Tooltip text 1"
ToolTipOpening="ToolTip"
ToolTipClosing="ToolTip" />
<CheckBox Content="CheckBox"
ToolTip="Tooltip text 2"
ToolTipOpening="ToolTip"
ToolTipClosing="ToolTip" />
(Similarly, other items)
C#:
public void ToolTip(object s, ToolTipEventArgs e)
{
TextBlock.Text =
e.RoutedEvent == ToolTipService.ToolTipOpeningEvent
? (s as FrameworkElement).ToolTip : string.Empty;
}
它有效。但是是否可以不在元素中指明事件(ToolTipOpening="ToolTip" 和ToolTipClosing="ToolTip"),而是通过简单地在元素中指定提示(ToolTip="Tooltip text")来达到预期的效果?谢谢。
【问题讨论】:
-
Here 是如何在状态栏中显示工具提示。但是,如果没有工具提示,你为什么要使用工具提示呢?您可以创建附加行为来模仿工具提示行为(使用
MouseEnter/MouseLeave)并通过您只需绑定的另一个附加属性公开当前值。