如何在鼠标上方对文本块进行着色?

时间:2010-06-12 23:23:01

标签: c# silverlight silverlight-4.0

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

2 个答案:

答案 0 :(得分:2)

你对不使用该事件背后的代码的直觉是一个很好的直觉。 请允许我对其进行锐化:不要从代码隐藏中更改视觉效果,但允许ViewModels / Code-Behind拥有控件的可视状态。

这里的解决方案是将特定的视觉变化封装在自定义的可视状态中,并从ViewModel或Blend EventTrigger& GoToStateAction。

要了解有关VisualStateManager的更多信息,我强烈建议您观看Steve White @ http://expression.microsoft.com/en-us/cc643423.aspx

这4个“我如何”的视频

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

答案 1 :(得分:-1)

您可以设置样式触发器:

<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>