WPF中當鼠標移到按鈕上時,按鈕的背景圖片消失的問題


如果給按鈕設置了背景圖片,當鼠標移到按鈕上的時候,按鈕就好變成一個淺藍色的按鈕,背景圖片就消失了,對於這個問題有很多解決方法,我只分享一下我的解決方法。

我第一次用的方式是在按鈕中添加一個圖片,不用背景來設置。

<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;
        }

就這樣,運行程序,當鼠標進入按鈕的時候,按鈕就會變成半透明,且出現紅色邊框


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM