如果給按鈕設置了背景圖片,當鼠標移到按鈕上的時候,按鈕就好變成一個淺藍色的按鈕,背景圖片就消失了,對於這個問題有很多解決方法,我只分享一下我的解決方法。
我第一次用的方式是在按鈕中添加一個圖片,不用背景來設置。
<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; }
就這樣,運行程序,當鼠標進入按鈕的時候,按鈕就會變成半透明,且出現紅色邊框