Попытка использовать RX с событиями, но это намекает на меня. Это «нормальный» способ подписаться на событие
this.Loaded += new RoutedEventHandler(SelectPartyPersonDataEntry_Loaded);
Путь RX ....
Observable.FromEventPattern<RoutedEventArgs>(this, "Loaded").Subscribe((routedEvent) => this.Searchbutton_Click(routedEvent.Sender, routedEvent.EventArgs));
однако, он молча терпит неудачу, и я не уверен почему.
Спасибо!
Я не совсем уверен, как с этим справиться, поскольку оба эти ответа помогли мне понять, в чем я ошибался. Правильный синтаксис (или тот, который работает):
Observable.FromEventPattern<RoutedEventHandler, RoutedEventArgs>(h => this.Loaded += h, h => this.Loaded -= h).Subscribe(routedEvents => SelectPartyPersonDataEntry_Loaded(routedEvents.Sender, routedEvents.EventArgs));
Что выглядит более запутанным, чем что-либо еще. Я должен предоставить как тип EventHandler (RoutedEventHandler), так и тип аргумента события (RoutedEventArgs), чтобы подписаться на события. Использование этой подписи FromEventPattern означает, что мне нужно использовать синтаксис + = / - = для подписки на событие.
Я вижу только одну причину, по которой вы бы сделали это по сравнению с традиционным (и более лаконичным) синтаксисом, - разницу между сильной ссылкой и слабой ссылкой. Если это представление выходит за пределы области действия, необходимо обеспечить надежную ссылку, чтобы представление было собрано (GC). Синтаксис RX является слабой ссылкой, и поэтому он будет GC без разыменования события.