2013-02-24 4 views
3

В WPF есть способ установить конкретный тип события для всех элементов управления того же типа. Например, я пытаюсь установить событие MouseLeftButtonDown для всех элементов управления типа TextBlock. Вот что я пытался сделать, что явно неверно:Установить событие для всех элементов управления того же типа

<Style TargetType="{x:Type TextBlock}"> 
    <Setter Property="MouseLeftButtonDown" Value="TextBlock_LeftClick"/> 
</Style> 

Есть ли способ, которым это можно сделать?

ответ

5

Да есть способ, вы можете использовать EventSetter свойство в Style установить EventHandler для всех Elements с прикладной, что стиль

Пример:

<Style TargetType="{x:Type TextBlock}"> 
    <EventSetter Event="MouseLeftButtonDown" Handler="TextBlock_LeftClick" /> 
</Style> 
+0

Я использую ваш метод для добавления события щелчка мыши к эллипсу, но встречаю ошибку, такую ​​как th is: «WpfApplication1.App» не содержит определения для «Ellipse_LeftClick», и не может быть найден метод расширения «Ellipse_LeftClick», принимающий первый аргумент типа «WpfApplication1.App» (вам не хватает директивы using или ссылки на сборку?) – harsini

3

Вы можете сделать это в одном с использованием WPF EventManager

EventManager.RegisterClassHandler(typeof(Hyperlink), 
            Hyperlink.ClickEvent, 
           new RoutedEventHandler(this.OnHyperlinkClick)); 
Смежные вопросы