WPF材料设计按钮悬停

4
我正在使用Material Design为我的WPF项目提供支持,现在我想为按钮的悬停状态设置背景颜色。 如代码所示,实现是通过ProgressBar、Ripple和Border完成的。
如果我尝试覆盖样式,最终会得到一个不可见的按钮:
<Style TargetType="{x:Type Button}"
       BasedOn="{StaticResource MaterialDesignRaisedButton}">
    <Setter Property="Background"
            Value="{StaticResource MainColorSolidBrush}" />
    <Setter Property="Foreground"
            Value="{StaticResource TextColorLightSolidBrush}" />
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type Button}">

                <ControlTemplate.Triggers>

                    <!--Hover-->
                    <Trigger Property="IsMouseOver"
                             Value="true">
                        <Trigger.EnterActions>
                            <BeginStoryboard>
                                <Storyboard>
                                    <ColorAnimation Storyboard.TargetProperty="(Background).(SolidColorBrush.Color)"
                                                    To="{StaticResource SubColor}"
                                                    FillBehavior="HoldEnd"
                                                    Duration="{StaticResource HoverStartDuration}" />
                                </Storyboard>
                            </BeginStoryboard>
                        </Trigger.EnterActions>
                        <Trigger.ExitActions>
                            <BeginStoryboard>
                                <Storyboard>
                                    <ColorAnimation Storyboard.TargetProperty="(Background).(SolidColorBrush.Color)"
                                                    To="{StaticResource MainColor}"
                                                    FillBehavior="Stop"
                                                    Duration="{StaticResource HoverEndDuration}" />
                                </Storyboard>
                            </BeginStoryboard>
                        </Trigger.ExitActions>
                    </Trigger>

                </ControlTemplate.Triggers>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

那我需要重新实现包中的原始样式并添加一种Hover效果吗?

好的,所以我需要重新实现整个RaisedButton并手动添加悬停效果? - DirtyNative
1个回答

3
您无法仅覆盖模板的一部分,而必须将其定义为整体。这意味着您应该从GitHub复制MaterialDesignRaisedButton样式,并根据您的要求进行编辑,例如将其他setter添加到IsMouseOver触发器中。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接