2012-06-17 232 views
0

我想每次用戶按下該按鈕時更改我的按鈕的背景圖像。 我已將ImageSource設置爲我的照片。當鼠標停在按鈕上時,我的按鈕不顯示圖像。如何設置圖片,以便即使鼠標懸停在按鈕上仍然有圖像?更改按鈕圖像

 <Button x:Name="recordButton" Content="" HorizontalAlignment="Left" Height="50" Margin="60,45,0,0" VerticalAlignment="Top" Width="50" Click="recordButton_Click"> 
     <Button.Background> 
      <ImageBrush ImageSource="play.png"/> 
     </Button.Background> 
    </Button> 

還有一個問題。如何改變這兩張照片? 他們的名字是「play.png」和「stop.png」,都位於Resources。

 private bool recordStarted = false; 

    private void recordButton_Click(object sender, RoutedEventArgs e) 
    { 
     recordStarted = !recordStarted; 


     if(recordStarted) 
     { 
      ImageBrush brush1 = new ImageBrush(); 
      BitmapImage image = Properties.Resources.stop; 
      brush1.ImageSource = image; 
      recordButton.Background = brush1; 

     } 
    } 

我已經試過,但VS找不到BitmapImage image = Properties.Resources.stop; 幫助,請!

回答

1

我建議不設置背景是圖像,而是設置內容爲圖像

<Button x:Name="recordButton" HorizontalAlignment="Left" Height="50" Margin="60,45,0,0" VerticalAlignment="Top" Width="50" Click="recordButton_Click"> 
    <Image Source="play.png"/> 
</Button> 

如果你想改變形象,你可以將文本內做到這一點,這是最簡單的在資源文件中使用編譯爲資源,而不是圖像的圖像

(recordButton.Content as Image).Source = new BitmapImage(new Uri("Images/stop.png", UriKind.Relative)); 

如果你想使用一個資源文件,請參閱本SO post

+0

嗯。但如何改變picutres? – omtcyfz

+0

您可以設置圖像的Source屬性,請參閱我的更新 –

+0

謝謝。但是......現在按下按鈕後,它不再顯示任何圖像。所以它沒有幫助:( – omtcyfz

0

有一些方法來改變圖片:

  1. 重新定義一個按鈕控件模板和使用VisualStateManager

  2. 重新定義控制模板並使用Trigger s。

  3. 您可能會嘗試將按鈕的內容綁定到它的MouseOver屬性:何時鼠標隱藏一個圖像並顯示另一個圖像。