2017-05-21 230 views
0

真的很愚蠢的問題,但我已經通過XAML設置了我的按鈕的背景圖像。但是當我運行該應用程序並將鼠標懸停在其上時,它將更改爲默認外觀。設置按鈕的背景圖片

我不能解決如何做一個鼠標了嗎?

<Button x:Name="btnPlay" Content="Play" Canvas.Left="93" Canvas.Top="93" Width="183" 
      Click="button_Click" Height="84" FontFamily="Showcard Gothic" Cursor="Hand" BorderBrush="{x:Null}"> 
    <Button.Background> 
     <ImageBrush ImageSource="Images/BlueButton.png"/> 
    </Button.Background> 
</Button> 
+2

檢查此答案:http://stackoverflow.com/questions/12271916/wpf-button-mouseover-image?answertab=active#tab-top。下次請記住使用一個好的標題,而不是通用的。 – Baro

+0

是的,這是按鈕默認控制模板使用的按鈕鉻,與鼠標懸停在背景上混淆。正如Baro指出的那樣,您基本上需要爲按鈕定義您自己的控制模板以擺脫該模板。 – elgonzo

回答

0

這是對this solution的修改。考慮在Template內使用Background="{TemplateBinding Background}"作爲Border,因此當Button的背景發生變化時,它會更新BackgroundBorder

<Button x:Name="btnPlay" Content="Play" Canvas.Left="93" Canvas.Top="93" Width="183" 
     Click="button_Click" Height="84" FontFamily="Showcard Gothic" Cursor="Hand" 
     BorderBrush="{x:Null}"> 
    <Button.Background> 
     <ImageBrush ImageSource="/WpfApplication1;component/5.png" /> 
    </Button.Background> 
    <Button.Template> 
     <ControlTemplate TargetType="Button"> 
      <Border Name="border" Background="{TemplateBinding Background}"> <!--Consider this--> 
       <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" /> 
      </Border> 
      <ControlTemplate.Triggers> 
       <Trigger Property="IsMouseOver" Value="True"> 
        <Setter Property="Background"> 
         <Setter.Value> 
          <ImageBrush ImageSource="/WpfApplication1;component/5.png" /> 
         </Setter.Value> 
        </Setter> 
        <Setter Property="BorderBrush" Value="Black"/> 
       </Trigger> 
      </ControlTemplate.Triggers> 
     </ControlTemplate> 
    </Button.Template> 
</Button>