2014-09-24 111 views
1

我已經編寫了此代碼,用於將文本插入到Button中。所以我有這樣的:WPF如何在鼠標位於按鈕上時更改背景圖片

<Button Style="{StaticResource TransparentButton}" 
     Grid.Column="0" 
     Grid.Row="0" 
     Command="{Binding Path=MovePreviousCommand}" 
     Width="150"> 
    <Button.Content> 
     <StackPanel Orientation="Horizontal"> 
      <Grid> 
       <Image Source="./Resources/Images/bottone_indietro.png" Width="130"/> 
       <Label Content="{x:Static res:Strings.GestoreWizardView_Button_MovePrevious}" 
         HorizontalAlignment="Center" VerticalAlignment="Center" 
         Margin="48,10,26,8" Style="{StaticResource LabelStyleButton}" 
         /> 
      </Grid> 

     </StackPanel> 
    </Button.Content> 
</Button> 

這是一個樣式按鈕

<Style TargetType="Button" x:Key="TransparentButton"> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="Button"> 
       <Border Background="Transparent"> 
        <ContentPresenter/> 
       </Border> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

現在我想改變背景圖像時,鼠標移動到按鈕。

我們可以幫我嗎?

最好的調節器。

+0

它是按鈕或整個窗口的背景嗎? – ZoomVirus 2014-09-24 14:53:05

+0

是按鈕 – bircastri 2014-09-24 14:53:48

回答

2

這應該工作提供您想要的圖像是在資源文件夾內。

<Style x:Key="TransparentButton" TargetType="Button"> 
    <Setter Property="OverridesDefaultStyle" Value="True"/> 
    <Setter Property="Margin" Value="5"/> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="Button"> 
       <Border Name="border" 
        BorderThickness="0" 
        Background="{TemplateBinding Background}"> 
        <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" /> 
       </Border> 
       <ControlTemplate.Triggers> 
        <Trigger Property="IsMouseOver" Value="True"> 
         <Setter Property="Background" TargetName="border"> 
         <Setter.Value> 
          <ImageBrush ImageSource="Resources/image.jpg" /> 
         </Setter.Value> 
        </Setter> 
       </Trigger> 
       </ControlTemplate.Triggers> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 
+0

的背景我嘗試使用你的代碼和它的作品,但背景圖像是在默認背景下圖片,我認爲這個方法在按鈕上插入背景圖片是錯誤的「」 – bircastri 2014-09-24 15:32:12

+0

確保圖像的構建操作設置爲資源。 – ZoomVirus 2014-09-24 15:51:29

+0

這裏的問題是你設置了按鈕背景,而原始圖像被添加爲內容。它需要匹配,無論是作爲背景還是作爲內容。 – 2014-09-24 15:58:11

0

爲了保持其緊湊:

<Image Width="130" > 
    <Image.Style> 
     <Style TargetType="{x:Type Image}"> 
      <Setter Property="Source" Value="./Resources/Images/bottone_indietro.png"/> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding IsMouseOver, RelativeSource={RelativeSource AncestorType=Button}}" Value="True"> 
        <Setter Property="Source" Value="./Resources/Images/bottone_indietro_altro.png"/> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </Image.Style> 
</Image> 

我得到一個無害的設計時異常(運行正常),因爲按鈕的祖先是在運行時才能檢測。如果這是一個問題,你可以嘗試this