Перенаправленные аргументы событий с ButtonBase

В настоящее время я работаю над программой с командой участников, и они тоже не знают, как это решить. Я создал набор специальных пользовательских элементов управления "ImageButton". Я использую это для раздела меню программы. Само меню — это еще один пользовательский элемент управления.

В настоящее время они используют ButtonBase.Click для доступа к кнопкам, но это не работает с моими новыми кнопками ImageButtons.

ButtonBase.Click приводит к событию под названием «MainMenu_Click».

private void MainMenu_Click (отправитель объекта, RoutedEventArgs e) { Button _menuButtonClicked = (Button) e.OriginalSource; this.ShowMainPage((MainMenuCommands)_menuButtonClicked.Tag); }

Я уже пробовал анализировать их как ImageButtons, но это не сработало. Поэтому мне нужно решение, похожее на ButtonBase.Click, но для моих кнопок ImageButton.

Изменить: есть 3 файла, с которыми я работаю: MainWindow.xaml (и его cs) MainMenu.xaml (и его cs) ImageButton.xaml (и его cs)

В MainMenu есть несколько кнопок ImageButton. MainMenu используется в MainWindow. Одним из свойств, которые необходимо установить, является ButtonBase.Click. Но мне нужно, чтобы это было настроено для ImageButtons, а не для System.Windows.Controls.Button.


person MeisterGao    schedule 15.06.2011    source источник
comment
Не уверен, что ваш вопрос. Вы имеете в виду, как мне реализовать событие щелчка на моем ImageButton?   -  person Ed Bayiates    schedule 15.06.2011
comment
Для моего ImageButton уже есть событие click. Проблема в том, что я не могу заставить функцию выше работать из-за проблемы синтаксического анализа. Мне нужно иметь возможность установить свойство ButtonBase.Click для моего ImageButton, которое анализируется как тип ImageButton.   -  person MeisterGao    schedule 15.06.2011


Ответы (1)


Вам нужно будет сделать свой ImageButton производным от ButtonBase (или Button) - тогда вы получите все ButtonBase, такие как его события, такие как Click. На самом деле сделать это довольно просто. У меня есть RibbonButton, который похож на кнопку изображения, которая является производной от Button в качестве пользовательского элемента управления. Вы пишете шаблон в Generic.xaml, чтобы настроить внешний вид, а затем добавляете любые другие свойства и код.

person Ed Bayiates    schedule 15.06.2011
comment
Тот, который уже настроен, — это ImageButton: UserControl в файле cs. Мне просто изменить UserControl на кнопку? - person MeisterGao; 15.06.2011
comment
Я, вероятно, должен отметить, что мой босс хочет, чтобы это было пользовательским контролем. - person MeisterGao; 15.06.2011
comment
Вам нужно изменить его на кнопку или пользовательский элемент управления на основе ButtonBase. Вы не можете использовать ButtonBase.Click для UserControl, поскольку ButtonBase.Click определен только для ButtonBase; это не прикрепленное имущество. - person Ed Bayiates; 15.06.2011
comment
Хорошо, я все еще не понимаю этого. Я попытался изменить public partial class ImageButton : UserControl на «общедоступный частичный класс ImageButton: Button», но это не сработало. Мой начальник вообще не хочет, чтобы я использовал настраиваемые элементы управления, только пользовательский контроль - person MeisterGao; 15.06.2011
comment
Вы не можете просто изменить объявление класса, это не сработает. Вы должны использовать настраиваемый элемент управления на основе Button или ButtonBase. Нет обходного пути, чтобы получить то, что вы хотите. - person Ed Bayiates; 15.06.2011