/ / Użyj rozszerzeń reaktywnych, aby zharmonizować i uprościć kontrolę. Włączone = prawda / fałsz? - Winforms, zdarzenia, obsługa zdarzeń, system.reactive

Użyj rozszerzeń reaktywnych, aby zharmonizować i uprościć Control.Enabled = true / false conditions? - WinFormy, zdarzenia, obsługa zdarzeń, system.reactive

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 № 1

Moż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.