2013-07-31 95 views
0

我想創建一個WPF按鈕的樣式,按鈕的性質就像它顯示的背景圖像,並在它上面的鼠標顯示不同的背景圖像。 我創建了下面的XAML結構此WPF按鈕自動尺寸與背景圖像的樣式

<Style x:Key="ShelfRefreshButton" TargetType="Button"> 
      <Setter Property="OverridesDefaultStyle" Value="True"/> 
      <Setter Property="Width" Value="22"/> 
      <Setter Property="Height" Value="21"/>  
      <Setter Property="Background"> 
       <Setter.Value> 
        <ImageBrush ImageSource="images\refresh_active.png" /> 
       </Setter.Value> 
      </Setter> 
      <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="images\refresh_mouseover.png" /> 
            </Setter.Value> 
           </Setter> 

          </Trigger> 
         </ControlTemplate.Triggers> 
        </ControlTemplate> 
       </Setter.Value> 
      </Setter> 
     </Style> 

我現在面臨的問題是寬度和樣式的高度。我們如何使它成爲汽車?該按鈕應根據圖像大小調整大小。所以不需要設置寬度和高度硬編碼值。 在上述xaml風格,如果我刪除寬度和高度屬性按鈕我鼻涕可見。如何解決這個問題?我需要對樣式進行哪些更改?

回答

1

使用ImageBrush有點棘手,我建議你創建新的圖像元素,並控制它。將圖像和ContentPresenter放入網格中。接下來,給圖片命名,然後你可以控制它。之後,確保將圖像設置爲NoResize並將按鈕寬度&高度綁定到圖像的ActualWidth & ActualHeight。