在C#中的代码中创建图像作为按钮WPF
问题描述:
我想在C#WPF中的代码中创建一个图像作为按钮(不是带有BG图像的按钮,而是实际图像)。我在这个网站上阅读使用图片框的图像,我发现WPF等价物是图像。问题是,虽然我发现PictureBox有一个.Click,你可以设置,但图像不。我想要做的两件事是:在C#中的代码中创建图像作为按钮WPF
- 创建一个图像按钮阵列,可以点击。
- 为按钮的未点击和单击状态提供图像。
有什么东西在我眼前我失踪了吗?
这里是我的循环创建按钮:
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.)不使用图像并重新调整它们,而是使用带有自定义样式的按钮。然后你可以处理按钮的点击。
就我个人而言,我会用后者,但确实可行。