一个标签按钮,只有在有元素的地方才能点击,无法在全范围内触发
原始代码:
<Style x:Key="S10Btn" TargetType="Button">
<Setter Property="Width" Value="236"/>
<Setter Property="Height" Value="226"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Border x:Name="Border" CornerRadius="5" Background="{TemplateBinding Background}" Padding="1" BorderThickness="1" BorderBrush="#4094EE">
<Grid>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="150"/>
<RowDefinition Height="32"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Image Grid.Row="1" Source="S10.png" VerticalAlignment="Center" HorizontalAlignment="Center" Margin="0,0,0,10"/>
<TextBlock Text="S10" Style="{StaticResource FontStyle_1}" HorizontalAlignment="Center" VerticalAlignment="Center" Grid.Row="2"/>
</Grid>
</Grid>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="Border" Property="Background" Value="#4094EE"/>
</Trigger>
<Trigger Property="IsPressed" Value="True">
<Setter TargetName="Border" Property="Opacity" Value="0.5"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
此时只能点击有元素的位置触发<Trigger Property="IsMouseOver" Value="True">,不够丝滑
解决方法:
给最外层加一个Border 并给一个背景颜色即可代码如下:
<Border x:Name="Border" CornerRadius="5" Background="{TemplateBinding Background}" Padding="1" BorderThickness="1" >
这里一定要使用{TemplateBinding Background},否则会进入另外一个坑,可以看下一篇