Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > WPF и Silverlight > Прикрепление обработчика события


Автор: Kolovorot 19.9.2011, 23:22
Прикрепил обработчик события к Button.Click, чтобы обрабатывались только щелчки кнопки:
Код

<Window x:Class="WpfApplication2.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="618" Width="525">
    <StackPanel Button.Click="btns_click">
        <CheckBox>CheckBox</CheckBox>
        <Button>Button1</Button>
        <Button>Button1</Button>
        <TextBlock>My text block</TextBlock>
    </StackPanel>

</Window>


Почему при этом ещё обрабатывается событие щелчка по checkBox'у? smile 

Update:  При наведении курсора на Button.Click всплывает подсказка с текстом ButtonBase.Click. Отсюда понятно почему обрабатывается событие для checkBox. Но почему Button.Click определяется как ButtonBase.Click?
В книге Мэтью Мак-Дональда WPD а .NET 4 написано, что: "Если прикрепить обработчик события к ButtonBase.Click, то обработчик события будет использоваться при щелчке на любом элементе управления, порожденного от ButtonBase(включая классы Button, RadioButton и CheckBox). Но если прикрепить обработчик события к Button.Click, то он будет использоваться только для объектов Button."

Автор: Gvozdin 20.9.2011, 08:54
На самом деле нет события Button.ClickEvent, есть только ButtonBase.ClickEvent.

Button.ClickEvent просто доступно из-за наследования Button : ButtonBase.

Перефразируя, Button.Click ни чем не отличается от ButtonBase.Click smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)