Вы, вероятно, можете решить эту проблему, создав Facility, наследуя от AbstractFacility. Зарегистрируйтесь в событии Kernel.ComponentCreated и проверьте, нуждается ли созданный компонент в уведомлении об изменении свойства. Если это так, зарегистрируйтесь.
Вы можете использовать событие ComponentDestroyed, чтобы убедиться, что вы также успешно отменили регистрацию. Ниже фрагмента кода, который я использую для автоматической регистрации моделей представления с помощью агрегатора событий Caliburn.Micro
class EventRegistrationFacility : AbstractFacility
{
private IEventAggregator _eventAggregator;
protected override void Init()
{
Kernel.ComponentCreated += ComponentCreated;
Kernel.ComponentDestroyed += ComponentDestroyed;
}
void ComponentCreated(Castle.Core.ComponentModel model, object instance)
{
if (!(instance is IHandle)) return;
if (_eventAggregator == null) _eventAggregator = Kernel.Resolve<IEventAggregator>();
_eventAggregator.Subscribe(instance);
}
void ComponentDestroyed(Castle.Core.ComponentModel model, object instance)
{
if (!(instance is IHandle)) return;
if (_eventAggregator == null) return;
_eventAggregator.Unsubscribe(instance);
}
}
С уважением,
Marwijn.