2014-10-04 149 views
-1

我是WPF新手。我嘗試用按鈕創建一個菜單。我設置圖像作爲Button的背景。但圖像背景更改鼠標懸停事件。xaml中的按鈕mousehover事件的圖像背景更改

我的XAML文件的代碼,

<Menu x:Name="MainMenu" HorizontalAlignment="Left" Height="100" VerticalAlignment="Top" Foreground="White" Background="Black" IsTabStop="True" IsTextSearchEnabled="True" Focusable="False" > 
      <Button x:Name="Menu_btnAdd" Cursor="Arrow" ToolTip="Add" Height="100" Width="100" TabIndex="1" IsEnabled="true" IsDefault="True" IsHitTestVisible="true" 
        Click="Menu_btnAdd_Click" MouseDown="Menu_btnAdd_MouseDown" > 
       <Button.OpacityMask> 
        <ImageBrush ImageSource="Images/Menu_Drawings.png"> 

        </ImageBrush> 
       </Button.OpacityMask> 
       <Button.Foreground> 
        <ImageBrush ImageSource="Images/Menu_Drawings.png"/> 
       </Button.Foreground> 
       <Button.BorderBrush> 
        <ImageBrush ImageSource="Images/Menu_Drawings.png"/> 
       </Button.BorderBrush> 
       <Button.Background> 
        <ImageBrush ImageSource="Images/Menu_Drawings.png"/> 
       </Button.Background> 

      </Button> 
      <Button x:Name="Menu_btnView" Cursor="Arrow" ToolTip="View" Height="100" Width="100" TabIndex="1" IsEnabled="true" IsDefault="True" 
        > 
       <Button.OpacityMask> 
        <ImageBrush ImageSource="Images/Menu_Components.png"> 

        </ImageBrush> 
       </Button.OpacityMask> 
       <Button.Foreground> 
        <ImageBrush ImageSource="Images/Menu_Components.png"/> 
       </Button.Foreground> 
       <Button.BorderBrush> 
        <ImageBrush ImageSource="Images/Menu_Components.png"/> 
       </Button.BorderBrush> 
       <Button.Background> 
        <ImageBrush ImageSource="Images/Menu_Components.png"/> 
       </Button.Background> 

      </Button> 
     </Menu> 

鼠標懸停按鈕的背景結果: enter image description here 請指引我,我需要什麼屬性來設置,所以我的背景圖像沒有變化?

回答

0

鼠標懸停是按鈕的默認可視狀態正在啓用。爲了克服這一點,你必須覆蓋默認模板按鈕並擺脫這一點。

但是,我可以建議一種解決方法,看看它是否適合你。不要將圖片設置爲背景,請將其添加爲按鈕的內容

<Button> 
    <Image Source="Images/Menu_Drawings.png" Stretch="Fill"/> 
</Button> 

其他選項將按鈕的覆蓋默認模板,擺脫鼠標懸停的觸發器。 (在刪除這些觸發器後添加下面的示例)在資源下聲明模板並應用於您希望具有該外觀的按鈕。

<Menu> 
    <Menu.Resources> 
     <ControlTemplate x:Key="ModifiedTemplate" TargetType="ButtonBase"> 
      <Border BorderThickness="{TemplateBinding Border.BorderThickness}" 
        BorderBrush="{TemplateBinding Border.BorderBrush}" 
        Background="{TemplateBinding Panel.Background}" 
        Name="border" 
        SnapsToDevicePixels="True"> 
       <ContentPresenter RecognizesAccessKey="True" 
            Content="{TemplateBinding ContentControl.Content}" 
            ContentTemplate="{TemplateBinding ContentControl.ContentTemplate}" 
            ContentStringFormat="{TemplateBinding ContentControl.ContentStringFormat}" 
            Name="contentPresenter" 
            Margin="{TemplateBinding Control.Padding}" 
            HorizontalAlignment="{TemplateBinding Control.HorizontalContentAlignment}" 
            VerticalAlignment="{TemplateBinding Control.VerticalContentAlignment}" 
            SnapsToDevicePixels="{TemplateBinding UIElement.SnapsToDevicePixels}" 
            Focusable="False" /> 
      </Border> 
      <ControlTemplate.Triggers> 
       <Trigger Property="Button.IsDefaulted" Value="True"> 
        <Setter Property="Border.BorderBrush" TargetName="border"> 
         <Setter.Value> 
          <DynamicResource ResourceKey="{x:Static SystemColors.HighlightBrushKey}" /> 
         </Setter.Value> 
        </Setter> 
       </Trigger> 
       <Trigger Property="ToggleButton.IsChecked" Value="True"> 
        <Setter Property="Panel.Background" TargetName="border"> 
         <Setter.Value> 
          <SolidColorBrush>#FFBCDDEE</SolidColorBrush> 
         </Setter.Value> 
        </Setter> 
        <Setter Property="Border.BorderBrush" TargetName="border"> 
         <Setter.Value> 
          <SolidColorBrush>#FF245A83</SolidColorBrush> 
         </Setter.Value> 
        </Setter> 
       </Trigger> 
       <Trigger Property="UIElement.IsEnabled" Value="False"> 
        <Setter Property="Panel.Background" TargetName="border"> 
         <Setter.Value> 
          <SolidColorBrush>#FFF4F4F4</SolidColorBrush> 
         </Setter.Value> 
        </Setter> 
        <Setter Property="Border.BorderBrush" TargetName="border"> 
         <Setter.Value> 
          <SolidColorBrush>#FFADB2B5</SolidColorBrush> 
         </Setter.Value> 
        </Setter> 
        <Setter Property="TextElement.Foreground" TargetName="contentPresenter"> 
         <Setter.Value> 
          <SolidColorBrush>#FF838383</SolidColorBrush> 
         </Setter.Value> 
        </Setter> 
       </Trigger> 
      </ControlTemplate.Triggers> 
     </ControlTemplate> 
    </Menu.Resources> 
    <Button Template="{StaticResource ModifiedTemplate}"> 
     <Button.Background> 
      <ImageBrush ImageSource="Images/Menu_Drawings.png"/> 
     </Button.Background> 
    </Button> 
</Menu> 
+0

第一個想法是good.Can任何選項來改變鼠標懸停事件的顏色,而突出的按鈕 – 2014-10-04 10:29:10

+0

對於圖像工作,你需要重寫默認的模板,並提供自己的一套畫筆就像第二個被提供樣品。 – 2014-10-04 11:38:46