如何仅使按钮图像变灰,而不是整个按钮

时间:2013-10-18 14:19:01

标签: silverlight button disabled-control

我只想将图像变灰而不是整个按钮。原因是按钮上的图像部分透明,所以当整个按钮变灰时,它看起来很奇怪。

在下图中,您可以看到整个按钮显示为灰色,而不仅仅是可见图像

fully grayed out button

相关... sorta:Disabling Button with custom Content in Silverlight?

1 个答案:

答案 0 :(得分:0)

您需要覆盖按钮的ControlTemplate。怎么做?

  1. 创建新样式
  2. 在该样式中定义ControlTemplate
  3. ControlTemplate查找名为“已禁用”的可视状态的定义
  4. 更改它以便仅更改图像,而不会使整个按钮变灰。
  5. 这些是控件模板的相关部分

    <ControlTemplate TargetType="Button">
        <VisualStateManager.VisualStateGroups>
            <VisualStateGroup x:Name="CommonStates">
                <!-- other states go here -->
                <VisualState x:Name="Disabled">
                    <Storyboard>
                        <DoubleAnimation Duration="0" 
                                         Storyboard.TargetName="DisabledImage"  
                                         Storyboard.TargetProperty="Opacity" To="1"/>
                    </Storyboard>
                </VisualState>
            </VisualStateGroup>
        </VisualStateManager.VisualStateGroups>
        <!-- rest of the template goes here -->
    </ControlTemplate>
    

    您在视觉状态管理器中引用的DisabledImage则需要完全覆盖启用按钮上显示的图像,以便在禁用时,只有用户可以看到灰色图像。