Создание изображений в виде кнопок в коде в C # WPF - PullRequest
0 голосов
/ 22 июля 2010

Я хочу создать изображение в виде кнопки в коде в C # WPF (не кнопку с изображением BG, а реальное изображение). Я читал на этом сайте, чтобы использовать PictureBox для изображения, и я обнаружил, что эквивалент WPF это Image. Проблема в том, что, хотя я обнаружил, что PictureBox имеет .Click, который вы можете установить, Image - нет. Две вещи, которые я хочу сделать:

  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 Ответ

2 голосов
/ 22 июля 2010

Два варианта здесь:

1.) Вместо использования события Click, которого нет в Image, используйте MouseDown, что и делает.

2.) Вместо использования изображений и их повторного использования используйте кнопки со специальным стилем. Тогда вы можете справиться с нажатием кнопки.

Лично я бы использовал последнее, но на самом деле либо работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...