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