2010-07-22 86 views
0

我想在C#WPF中的代碼中創建一個圖像作爲按鈕(不是帶有BG圖像的按鈕,而是實際圖像)。我在這個網站上閱讀使用圖片框的圖像,我發現WPF等價物是圖像。問題是,雖然我發現PictureBox有一個.Click,你可以設置,但圖像不。我想要做的兩件事是:在C#中的代碼中創建圖像作爲按鈕WPF

  1. 創建一個圖像按鈕陣列,可以點擊。
  2. 爲按鈕的未點擊和單擊狀態提供圖像。

有什麼東西在我眼前我失蹤了嗎?

這裏是我的循環創建按鈕:

sideBarButtons = new Button[infoLoader.categoriesLength]; 
      sideButtons = new Image[infoLoader.categoriesLength]; 
      ImageBrush[] myBg = new ImageBrush[infoLoader.categoriesLength]; 
      for (int i = 0; i < sideBarButtons.Length; i++) 
      { 
       myBg[i] = new ImageBrush(); 
       myBg[i].ImageSource = new BitmapImage(graphicLoader.buttonUnselected[(i % myBg.Length)]); 

       /*sideBarButtons[i] = new Button(); 
       sideBarButtons[i].Content = infoLoader.categories[i].name; 
       sideBarButtons[i].Background = myBg[i]; 
       //sideBarButtons[i].BorderThickness = ; 
       sideBarButtons[i].Width = 155; 
       sideBarButtons[i].Height = 46; 
       Canvas.SetLeft(sideBarButtons[i], 30); 
       Canvas.SetTop(sideBarButtons[i], 10 + (46 * i)); 
       sideBarButtons[i].Click += new RoutedEventHandler(this.SideButton_Click); 
       leftSideBar.Children.Add(sideBarButtons[i]);*/ 

       BitmapImage myBmp = new BitmapImage(); 
       myBmp.BeginInit(); 
       myBmp.UriSource = myBg[i]; 
       myBmp.EndInit(); 

       sideButtons[i] = new Image(); 
       sideButtons[i].Source = myBmp; 
       sideButtons[i].Width = 155; 
       sideButtons[i].Height = 46; 
       Canvas.SetLeft(sideButtons[i], 30); 
       Canvas.SetTop(sideButtons[i], 10 + (46 * i)); 
       sideButtons[i].Click += new RoutedEventHandler(this.SideButton_Click); 
       leftSideBar.Children.Add(sideButtons[i]); 

      } 

第一註釋掉區域是當我創建按鈕和圖像沒有按鍵,而第二個是圖像,它不工作。提前致謝。

回答

2

兩個選項:

1)而不是使用Click事件,這不會對圖像有可能存在的,使用的MouseDown,這確實。

2.)不使用圖像並重新調整它們,而是使用帶有自定義樣式的按鈕。然後你可以處理按鈕的點擊。

就我個人而言,我會用後者,但確實可行。