代码之家  ›  专栏  ›  技术社区  ›  deanvmc

如何在鼠标悬停时为文本块上色?

  •  0
  • deanvmc  · 技术社区  · 14 年前

    我想看看是否有办法在鼠标悬停时更改Silverlight中文本块的颜色。我试过一个触发器,但我现在读到它不起作用。如果可能的话,我想尽量避免在代码隐藏中这样做。

    2 回复  |  直到 14 年前
        1
  •  2
  •   JustinAngel    14 年前

    你不使用代码隐藏来处理这个事件的直觉是很好的。 不过,请允许我对其进行锐化:不要从代码隐藏更改视觉效果,而是允许您的视图模型/代码隐藏拥有控件的视觉状态。

    这里的解决方案是在自定义可视状态中封装特定的可视更改,并从ViewModel或Blend EventTrigger&GoToStateAction调用该可视状态。

    要了解有关VisualStateManager的更多信息,我强烈建议您观看Steve White的这4个“我该怎么做”视频。@ http://expression.microsoft.com/en-us/cc643423.aspx

    要了解GoToStateBehavior的更多信息,请参见@ http://blogs.msdn.com/b/expression/archive/2010/02/22/switching-visual-states-easily-using-gotostateaction.aspx

        2
  •  -1
  •   Boris Lipschitz    14 年前

    您可以设置样式触发器:

    <TextBlock Text="Blah">
        <TextBlock.Style>
            <Style TargetType="{x:Type TextBlock}">
                <Style.Triggers>
                    <Trigger Property="IsMouseOver" Value="True">
                        <Setter Property="Background" Value="Green" />
                        <Setter Property="Foreground" Value="Black" />
                    </Trigger>
                </Style.Triggers>
            </Style>
        </TextBlock.Style>
     </TextBlock>