У Avalonia есть интересная возможность: можно подписываться на события на уровне класса —
https://docs.avaloniaui.net/docs/input/routed-even... Беда в том, что базовый интерфейс реактивных представлений/моделей предполагает реализацию
IViewFor[TViewModel], имеющуюся в
ReactiveUserControl[TViewModel]. А само реактивное событие — статическое свойство класса, работающее на уровне класса только для дочерних классов, но шаблонный (generic) тип не будет таковым. То есть, базовый класс A, реализующий реактивное событие, должен быть шаблонным, и никогда не передаст событие дочерним классам, с другим шаблонным типом, Base(T) не доведет событие до Concrete(ConcreteViewModel). Конечно, потребность в такой обработке событий можно обойти рядом способов, но тем не менее, местами хочется избежать лишнего кода, например, в цепочках передачи подписок и отписок, не усложняя менеджмент интерфейса, определяемого моделями (Content = SomeDataContext и т.д.). Так вот вопрос, изъян дизайна, так и задумано, что реактивные UserControl заставляют отказаться от ряда функций или есть решение?