繁体   English   中英

WPF按钮的边距在鼠标悬停时突出显示

[英]Margins of wpf button are highlighted on mouseover

我是WPF的新手,但是我的问题很小。 我有一个XAML按钮:

<Button  FontSize="17" Margin="15" Background="White" 
         BorderThickness="0" BorderBrush="#f6f6f6"
         FontWeight="DemiBold"
                   fluent:KeyTip.Keys="X"
                   CommandParameter="{Binding}"                                                               
                   Click="OnLoadPluginClick">                                                
    <Button.Effect>
        <DropShadowEffect Opacity="0.15"/>
    </Button.Effect>                                                
    <Button.Template>
        <ControlTemplate TargetType="{x:Type Button}">
            <Border Name="Border" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="1"
                    Grid.Row="0" Margin="5,10,0,0"  Height="180" Width="180" VerticalAlignment="Top" 
                    Background="{TemplateBinding Background}"
                   HorizontalAlignment="Left" >
                <Grid Height="180" Width="180" >
                    <Grid.RowDefinitions>
                        <RowDefinition Height="Auto"></RowDefinition>
                        <RowDefinition Height="*"></RowDefinition>
                    </Grid.RowDefinitions>
                    <TextBlock Grid.Row="0" Margin="10,10,0,0" FontSize="15" FontStretch="ExtraCondensed" Height="20" VerticalAlignment="Top"
                   HorizontalAlignment="Left" Text="{Binding Name}" />
                    <Image Stretch="Uniform" Width="70" Height="70" Grid.Row="1" HorizontalAlignment="Center" 
               VerticalAlignment="Center" Source="{Binding ImageSource}" />
                </Grid>
            </Border>

            <ControlTemplate.Triggers>
                <Trigger Property="Button.IsPressed" Value="True">
                    <Setter TargetName="Border" Property="Background" Value="WhiteSmoke" />

                </Trigger>                                                            
                <Trigger Property="IsMouseOver" Value="True">
                    <Setter Property="Effect">
                        <Setter.Value>
                            <DropShadowEffect ShadowDepth="0" Color="WhiteSmoke" Opacity="0.6" BlurRadius="20"/>
                        </Setter.Value>
                    </Setter>
                    <!--<Setter TargetName="Border" Property="Background" Value="LightGreen"></Setter>-->
                </Trigger>                                                            
            </ControlTemplate.Triggers>
        </ControlTemplate>
    </Button.Template>
</Button>

如您所见,我有自己的触发器,但我无法实现所需的外观(当鼠标处于按钮上时的阴影)。 我得到这样的东西:

WrongMarginHighlight

如您所见,我只有空白处用不明显的灰色突出显示...

我需要什么:当鼠标位于按钮边框上时,边框会变得更大的阴影,当按下边框时,其背景会设置为WhiteSmoke

像这样的东西,但是有图像: cancelButton

如何正确实现此按钮?

如果有任何帮助,我将不胜感激。

在IsMouseOver触发器的setter标记中设置TargetName = Border。 可能有效

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM