在C#中的代码中创建图像作为按钮WPF

问题描述:

我想在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]); 

      } 

第一注释掉区域是当我创建按钮和图像没有按键,而第二个是图像,它不工作。提前致谢。

两个选项:

1)而不是使用Click事件,这不会对图像有可能存在的,使用的MouseDown,这确实。

2.)不使用图像并重新调整它们,而是使用带有自定义样式的按钮。然后你可以处理按钮的点击。

就我个人而言,我会用后者,但确实可行。