Почему triggerAction является внутренним?

#wpf

#wpf

Вопрос:

Есть ли веская причина, по которой класс TriggerEvent usd в EventTriggers реализован как внутренний? Я могу найти 3 реализации этой абстрактной базы Claas. Один для воспроизведения звука и два разных действия в отношении раскадровок. Что, если я хочу выполнить действие «Отправить электронную почту»? Это скорее гипотетический вопрос. У меня нет реального приложения для этого. Я только что заметил это и задавался вопросом, почему это реализовано таким образом. Для меня было бы логично создать свое собственное действие и просто использовать его в триггере события (интерфейс был бы еще лучше). Я здесь что-то упускаю?

С уважением!

Ответ №1:

Я сомневаюсь, что вы можете что-либо сделать с этими классами, вместо этого используйте Interactivity из Blend SDK, который предоставляет классы ( TriggerAction<T> например), которые могут быть подклассированы.

Редактировать: Почему-то это можно найти только в документации Silverlight к классу:

triggerAction существует в Silverlight для совместимости с WPF. triggerAction не предназначен для использования в качестве основы для других реализаций триггеров; весь синтаксис триггеров не рекомендуется использовать в Silverlight 4. Для получения дополнительной информации см. Примечания в EventTrigger или Настройка внешнего вида существующего элемента управления с помощью ControlTemplate.

Все еще нет причины.

Комментарии:

1. Спасибо за совет. Это работает довольно неплохо. Но я все еще ищу возможную причину

2. Я не знаю, это загадка! (Возможно, было бы слишком мощно просто сделать его общедоступным, все приложения WPF взорвались бы)

3. Правильно :). MS довольно часто делает это и с другими классами. Они либо запечатаны, либо являются внутренними. Однако, еще раз спасибо. Теперь я, по крайней мере, знаю, что для этого нет очевидной причины.