2014-10-16 24 views
0

我有一個簡單的問題,但因爲這是我第一次在這裏使用C#/ XAML我去。C#添加圖像和處理程序的按鈕

XAML文件包含一個我想在運行時添加可點擊圖像的StackPanel。

<StackPanel x:Name="grid_" Orientation="Horizontal" Margin="10 0 10 0" VerticalAlignment="Center"> 
</StackPanel> 

我沒有在這些圖像創建click事件成功,我讀過,我可以用按鈕嘗試,改變他們的背景。這是我的代碼:

 for (int i = 0; i < 20; i++) 
     { 
      Button j = new Button(); 


      //Image j = new Image(); 
      //j.Source = new BitmapImage(new Uri("Images/my_thumb.png", UriKind.Relative)); 

      var brush = new ImageBrush(); 
      j.BackgroundImage = brush; 

      //j.MouseDown += new RoutedEventHandler(this.changeImage); 
      grid_.Children.Add(j); 
      Grid.SetRow(j, i);  
     } 

現在,我該如何更改按鈕圖像,並添加一個處理程序來檢索哪個按鈕被點擊?我得到的錯誤是

Error 3 'System.Windows.Controls.Button' does not contain a definition for 'BackgroundImage' and no extension method 'BackgroundImage' accepting a first argument of type 'System.Windows.Controls.Button' could be found (are you missing a using directive or an assembly reference?) 

你可以從我的代碼中的註釋,我仍然保留了普通圖像的方式看,只是可以肯定的:如果你知道如何讓我的圖片點擊,請告訴我:)

我可以安定下來的事件處理程序,可以只檢索按鈕圖像源文件名,以防萬一。

您能否指點我正確的方向?請記住我是一個完整的新手! :)

謝謝!

回答

1

您可以使用Click事件

j.Click += new EventHandler(onButtonClick); 

然後在事件處理程序

void onButtonClick(Object sender, EventArgs e) 
{ 
    var clickedButton = sender as Button; 
    // do your stuff..  
} 
+0

爲什麼FO我有這樣的錯誤?不能將類型'System.EventHandler'隱式轉換爲'System.Windows.RoutedEventHandler'。我的代碼是:「j.Click + = new EventHandler(this.changeImage);」並且我的處理程序是「public void changeImage(Object sender,EventArgs e)」? – senseiwa 2014-10-16 11:23:52

+1

它應該是「public void changeImage(object sender,RoutedEventArgs e)」&&「new RoutedEventHandler(this.changeImage)」 – 2014-10-16 11:33:06

+2

將eventhandler更改爲routedeventhandler – bit 2014-10-16 11:33:12

相關問題