WPF中当鼠标移到按钮上时,按钮的背景图片消失的问题

时间:2015-10-27 16:53:01   收藏:0   阅读:2649

如果给按钮设置了背景图片,当鼠标移到按钮上的时候,按钮就好变成一个浅蓝色的按钮,背景图片就消失了,对于这个问题有很多解决方法,我只分享一下我的解决方法。

我第一次用的方式是在按钮中添加一个图片,不用背景来设置。

<Button  HorizontalAlignment="Left" Margin="179,56.506,0,0" Click="Button_Click" VerticalAlignment="Top" Width="90" Height="74" BorderBrush="#FF1344EC" Grid.Row="1" Padding="2">
            <Image Source="image/dzsp.png" Name="btn1Image" Stretch="Fill"></Image>
        </Button>

  用这种方式设置的按钮确实不会再出现之前说的问题了,但是也暴露了另一个问题,那就是鼠标移到按钮上后,按钮不会有任何的反应。我希望的是鼠标移到按钮后,按钮的颜色能有所改变。所以我又使用了下面的方式。

<Button Width="100" Margin="0,0,0,4" Name="my" MouseEnter="my_MouseEnter" MouseLeave="my_MouseLeave" BorderBrush="{x:Null}">
                    <Button.Template>
                        <ControlTemplate TargetType="Button">
                            <ContentControl>
                                <Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}">
                                <StackPanel>
                                        <StackPanel Height="20">
                                            <StackPanel.Background>
                                                <ImageBrush ImageSource="image/ico_01.png" Stretch="None"/>
                                            </StackPanel.Background>
                                        </StackPanel>
                                    <Label BorderThickness="0" Padding="5" FontSize="17" FontWeight="SemiBold" Foreground="White" HorizontalContentAlignment="Center">XXXX</Label>
                                </StackPanel></Border>
                            </ContentControl>
                        </ControlTemplate>
                    </Button.Template>
                </Button>

  这种方式中,将原来用于做背景的图片给分离了,本来的图片是一个图标加上一段文字,现在是将图标单独制作为一张图片ico_01.png,然后原来背景图片中的文字放到了标签中。

定义按钮的两个事件MouseEnter和MouseLeave,分别用于处理鼠标移到按钮和移出按钮

private void my_MouseEnter(object sender, MouseEventArgs e)
        {
            my.BorderBrush = Brushes.Red;
            my.BorderThickness = new Thickness(2.0);
            my.Opacity = 0.5;
            ss++;
        }

        private void my_MouseLeave(object sender, MouseEventArgs e)
        {
            my.BorderBrush = null;
            my.BorderThickness = new Thickness(0.0);
            my.Opacity = 1;
        }

就这样,运行程序,当鼠标进入按钮的时候,按钮就会变成半透明,且出现红色边框

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!