2013-05-05 99 views
0

是否有可能,或者更準確地說,如何使用RX.Net來監聽多個(WinForms)控件的'.TextChanged/.RowsChanged/.SelectionChanged事件以及每當滿足一個條件時(ControlA。文本不爲空,ControlB.RowsCount> 0等)啓用一個DoSomething按鈕。使用Reactive Extensions來協調和簡化Control.Enabled = true/false條件?

我在問,因爲目前我們在這些事件的每個處理程序中都有一個冗長的if/then語句,並且如果條件發生變化,由於重複代碼,它會很容易出錯,這就是爲什麼,如果可能,我認爲將事件發生並將條件放在一個地方是很好的。

有沒有人這樣做?

+0

使用RX真的是矯枉過正。而且你不應該在視圖本身中這樣做。具有'CanDoSomething'等屬性的** viewmodel **比使用按鈕的Enabled'屬性進行數據綁定要容易得多。我現在沒有時間詳細說明這一點。也許以後,還是別人? – 2013-05-05 13:02:51

+0

@GertArnold謝謝,但這是一個WinForms應用程序,在Model/View/ViewModel之間沒有分隔。當然還有其他解決方案和解決方法,但是根據我的理解,將不同事件的流組合起來,並且如果在某個時刻恰好滿足一個條件似乎是RX的一個自然契合,那麼問題是否可行,以及爲什麼(不)和理想情況下如何如此。 – 2013-05-05 17:50:21

回答

0

您應該可以使用.FromEventPattern()爲每個事件創建觀察值,然後使用CombineLatest()對當前整體狀態執行邏輯並確定是否應在一個位置啓用按鈕。

相關問題