2014-02-24 83 views
0

我想改變懸停在C#上的一個按鈕的背景顏色我想我幾乎有它的sussed,我可能做出一些明顯的明顯錯誤......但字「顏色」用紅色加下劃線表示錯誤...「名稱」顏色「在當前上下文中不存在」...這是我迄今爲止的代碼;更改c中按鈕的背景顏色#

private void gas_button_MouseEnter(object sender, RoutedEventArgs e) 
{ 
    SolidColorBrush red = new SolidColorBrush(Colors.Red); 
    gas_button.Background = red;  
} 

任何幫助將不勝感激!在此先感謝

回答

0

在你的代碼的頂部添加此語句:

//import...oops! I like VB better, and I usualy use VB. Sorry. 
using System.Windows.Media; 

順便說一句,你可以使用「發件人」,而不是「gas_button」:

sender.BackgroundColor = red; 

通過這種,您的代碼變得更簡單。

(對不起,如果你知道這一點)

1

從你處理這個問題的方式,感覺就像你從任何一個WinForms或其他GUI庫背景的。

關於WPF的許多偉大事情之一是,你可以用聲明式方法解決這些問題,方法是定義Button(或任何其他控件)的樣式,以實現視覺效果,而無需編寫任何實際碼!看看下面的按鈕聲明:

<Button Content="Test"> 
    <Button.Style> 
     <Style TargetType="{x:Type Button}"> 
      <Setter Property="Background" Value="Green"/>     
      <Style.Triggers> 
       <Trigger Property="IsMouseOver" Value="True"> 
        <Setter Property="Background" Value="Red"/> 
       </Trigger> 
      </Style.Triggers> 
     </Style> 
    </Button.Style> 
</Button> 

這定義了我們一個按鈕,並覆蓋默認的按鈕樣式的背景設置爲綠色,並定義一個觸發器,將背景設置爲紅色時IsMouseOver是真實的。 IsMouseOver是一個DependencyProperty,因此觸發器可以在值發生更改時訂閱通知,這就是整個事情的工作方式。

與此代碼的障礙是它實際上不會工作!原因是標準的Button有一些更復雜的規則,使它看起來像一個真正的Windows按鈕。這可以適用於大多數其他控件或屬性,但不適用於按鈕背景。爲了解決這個問題,我們必須重寫Button的ControlTemplate並強制它呈現一個邊框,它是我們的Background屬性的顏色。這是一個有點太多進入這裏,但這個問題解決了這一問題: How do you change Background for a Button MouseOver in WPF?

爲您的最終代碼:

<Button Content="Test"> 
    <Button.Style> 
     <Style TargetType="{x:Type Button}"> 
      <Setter Property="Background" Value="Green"/> 
      <Setter Property="Template"> 
       <Setter.Value> 
        <ControlTemplate TargetType="{x:Type Button}"> 
         <Border Background="{TemplateBinding Background}"> 
          <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/> 
         </Border> 
        </ControlTemplate> 
       </Setter.Value> 
      </Setter> 
      <Style.Triggers> 
       <Trigger Property="IsMouseOver" Value="True"> 
        <Setter Property="Background" Value="Red"/> 
       </Trigger> 
      </Style.Triggers> 
     </Style> 
    </Button.Style> 
</Button> 

這種造型是什麼WPF是專門做。它使您可以爲完全基於標記的應用程序構建相當複雜和花哨/交互式的皮膚。您可以將它們存儲在主題文件中,並使用它們覆蓋應用程序的整個外觀。它非常強大,是一種將UI外觀與實際功能代碼分開的好方法。