Czy to możliwe, a ściślej jak to jestmożliwe użycie RX.Net do nasłuchiwania wielu różnych formantów (WinForms) ".TextChanged / .RowsChanged / .SelectionChanged zdarzenia i za każdym razem, gdy jeden warunek jest spełniony (ControlA.Text nie jest pusty, ControlB.RowsCount> 0 itp. ) włącz ten jeden przycisk DoSomething.
Pytam, bo obecnie mamy dośćinstrukcja if / then w każdym z tych programów obsługi i utrzymywanie ich, jeśli warunek się zmienia, ze względu na zduplikowany kod, jest dość podatny na błędy i dlatego, jeśli to możliwe, myślę, że byłoby miło wziąć strumień wydarzeń i umieść warunek w jednym miejscu.
Czy ktoś to zrobił?
Odpowiedzi:
0 dla odpowiedzi № 1Możesz użyć Observable.FromEventPattern w połączeniu ze wzorami łączenia, z Observable.When, Observable.A and Observable.Tworze tworzą obserwowalne, które będą strzelać w zależności od różnych warunków, takich jak kombinacje zdarzeń. Na przykład rozważ moją odpowiedź tutaj: Rozszerzenia reaktywne dla platformy .NET (Rx): podejmij działanie po zakończeniu wszystkich zdarzeń
0 dla odpowiedzi nr 2
Powinieneś być w stanie użyć .FromEventPattern()
stworzyć obserwowalne dla każdego z tych zdarzeń, a następnie użyć CombineLatest()
zrobić logikę na bieżącym ogólnym stanie i ustalić, czy przycisk powinien być włączony, w jednym miejscu.