只能在内容上按下具有自定义模板的WPF按钮

时间:2013-03-08 13:59:39

标签: .net wpf button

我有一个按钮样式+模板,如下所示:

<Style x:Key="ButtonStyle" TargetType="RepeatButton">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="RepeatButton">
                <Border Background="{DynamicResource {x:Static SystemColors.ControlColor}}" VerticalAlignment="Stretch" HorizontalAlignment="Stretch">            
                    <Path Data="{Binding Content, RelativeSource={RelativeSource TemplatedParent}}">
                        <Path.Fill>
                            <SolidColorBrush x:Name="PathBrush" Color="{x:Static SystemColors.ControlDarkColor}" />
                        </Path.Fill>
                    </Path>
                </Border>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

按钮的使用方式如下:

<RepeatButton Style="{StaticResource ButtonStyle}" Content="M 0 4 L 8 4 L 4 0 Z" />

但是,只有当鼠标悬停在路径上而不是整个按钮上时,才能按下该按钮。当鼠标悬停在按钮上而不是在路径上时,如何按下按钮?

1 个答案:

答案 0 :(得分:1)

这是因为BorderControlTemplate元素的背景属性设置不正确。它预计Brush,您提供了Color。由于它是DynamicResource,因此根本没有设置画笔。因此,Click不可见。只需提供刷子。

这应该可以解决问题:)

<Border Background="{DynamicResource {x:Static SystemColors.ControlBrushKey}}" VerticalAlignment="Stretch" HorizontalAlignment="Stretch">