2013-02-22 62 views
0

一个可以编辑前景和背景等等的按钮的默认状态没有混合只使用属性窗格或代码,但它是可以编辑其他状态的颜色没有混合?编辑按钮没有混合的视觉状态

例如,我想要的只是在“鼠标悬停”上变成灰色的按钮。任何我在Stack Overflow或Intertubes上看到的使用Blend。我想没有它就做。可能吗?

回答

2

一个简单的方法是使用Style触发器。

<Style x:Key="HoverButtonStyle" TargetType="{x:Type Button}"> 
    <Style.Triggers> 
     <Trigger Property="IsMouseOver" Value="True"> 
      <Setter Property="Background" Value="Gray"/> 
     </Trigger> 
    </Style.Triggers> 
</Style> 

样式在您的资源中定义。然后当你在XAML定义按钮,您所分配的风格,就像这样:

<Button x:Name="MyButton" Style="{DynamicResource HoverButtonStyle}"/> 

这种风格会改变Background刷你的Button当鼠标移动到它。触发器可以做很多更高级的事情,但这是一个非常简单的例子。如果你的谷歌WPF风格触发器,你会发现很多例子,包括this one这是非常彻底的。

还有其他的方法可以做到这一点,例如使用VisualStateManager,如所描述here,但是如果你只是想改变Background上悬停,一种风格的触发可能是最简单的方式。

+0

嘿Brian!很高兴再次见到你。是的这是有道理的,但你怎么知道一个属性是“可触发的”(可用于触发器)? – 2013-02-22 18:26:35

+0

嗨@IsaiahNelson,很高兴见到你。我相信任何'DependencyProperty'都可以作为'Trigger'的'Property'条件。如果你有多个标准,你可以使用'MultiTrigger'。至于在Trigger中可以改变什么,它就像一个'Style'设置器,所以你可以在'Style'中分配任何属性值。 – 2013-02-22 18:31:39