【问题标题】:Display text in a label when hovering over a control without using events在不使用事件的情况下将鼠标悬停在控件上时在标签中显示文本
【发布时间】:2014-02-02 13:19:58
【问题描述】:

当您将鼠标悬停在控件上时,许多程序会在状态栏中的标签中显示一小段信息,告诉您单击它会做什么,然后当鼠标离开其区域时它会重置文本。一个例子是 PaintShop Pro X4。

我想在我的应用程序中执行此操作。我当然可以很容易地做到这一点,方法是使用鼠标输入事件更改状态栏中的标签内容,然后在鼠标离开事件时将其清空,就像我在以前的一些程序中所做的那样,但这意味着我必须创建那些每个我想要在状态栏中显示其信息的控件的 2 个事件处理程序(我可以使用一个处理程序进行重置并让所有控件都使用它)但是我有大量的控件。有没有更好的方法可以在不使用任何 C# 或事件处理程序的情况下做到这一点?我可以在 XAML 中执行它吗,有点像布尔到可见性转换器,但只是将文本设置为某些东西,因为我真的不想为我什至可能不会用于任何东西的控件创建大量事件处理程序(例如组框,我不会在代码中使用它们,但我想要它的状态信息)?谢谢。

【问题讨论】:

  • 你想要的是一个工具提示..
  • 但我不想让它浮动,我想在悬停状态栏的标签中显示自定义文本
  • 查看this问题的答案...
  • 所做的只是在状态栏中放置一个带有项目和工具提示的菜单。如果可能的话,我想在不使用事件处理程序的情况下在控件悬停时更改标签的文本。
  • 嗯,您必须在somewhere 使用事件处理程序,这就是基于事件的应用程序中的工作方式。您可以使用交互性来抽象事件处理程序

标签: c# wpf xaml


【解决方案1】:

您可以在Trigger 中使用UIElement.IsMouseOver property 来做您想做的事。试试这样的:

<TextBlock>
    <TextBlock.Style>
        <Style>
            <Setter Property="Text" Value="Normal text" />
            <Style.Triggers>
                <Trigger Property="UIElement.IsMouseOver" Value="True">
                    <Setter Property="Text" Value="Mouse over text" />
            </Style.Triggers>
        </Style>
    </TextBlock.Style>
</TextBlock>

【讨论】:

  • 完美...但是如果您已经为控件应用了样式怎么办,比如我必须设置它的颜色和布局?
  • 然后在应用的Style中定义Trigger
猜你喜欢
  • 1970-01-01
  • 2019-11-14
  • 2012-09-04
  • 1970-01-01
  • 2012-04-01
  • 2022-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多