Здраствуйте!
Только начинаю "трогать" WPF и не могу понять в чем фишка attached events (прикрепляемые(присоединяемые) события)? Какое преимущество они дают и для чего используются?
Допустим у меня есть библиотека классов, в которой я реализовал собственную кнопку и форму(свои классы) — MyButton, MyForm.
Я нашел в сети исходник приложения, которое реализовано через стандартные Win контролы. Как мне подменить безболезненно для функций приложения стандартные контролы на мои — MyButton, MyForm? Как здесь помогут прикрепляемые события?
S>Только начинаю "трогать" WPF и не могу понять в чем фишка attached events (прикрепляемые(присоединяемые) события)? Какое преимущество они дают и для чего используются?
Это почти то же самое, что и RoutedEvent. Разница в том, как и где они объявлены и как их можно использовать. Если обычное RoutedEvent объявлено в классе MyButton, то в xaml'e на кнопку типа MyButton можно посадить обработчик этого события. А если MyButton объявляет Attached Event, то обработчик для него можно не только для MyButton делать, а для любого элемента.
Посмотрите для примера на Validation.Error событие. На него можно подписаться абсолютно в любом месте. Если где-то вниз по дереву элементов случится ошибка валидации, она поймается в обработчике события выше по дереву.
S> Как здесь помогут прикрепляемые события?
Для валидации могут пригодиться (при ошибках валидации кнопки можно делать недоступными и т.д...), а в остальных случаях — необязательно.
Здравствуйте, notacat, Вы писали:
N>Это почти то же самое, что и RoutedEvent. Разница в том, как и где они объявлены и как их можно использовать. Если обычное RoutedEvent объявлено в классе MyButton, то в xaml'e на кнопку типа MyButton можно посадить обработчик этого события. А если MyButton объявляет Attached Event, то обработчик для него можно не только для MyButton делать, а для любого элемента. N>Посмотрите для примера на Validation.Error событие. На него можно подписаться абсолютно в любом месте. Если где-то вниз по дереву элементов случится ошибка валидации, она поймается в обработчике события выше по дереву.
Я только хотел заострить внимание на том, что фича эта именно для XAML, потому что в коде можно прикреплять любые обработчики RoutedEvent к любым элементам.