2012-03-26 155 views
2

我有一個設計問題,我確定存在一個設計模式,我想知道該模式並獲得更多有關攻擊它的最佳實踐的信息。處理GUI組件中的循環依賴關係

我有一個輸入時間間隔的交互式界面。這個時間間隔具有上的天數(d)的數量的限制,小時(h),分鐘(m)和秒(s):

d < = C(C爲給出)

H:M:小號< = 5點30分00秒

enter image description here

在上述界面中,可以手動改變旋鈕(那些圓形儀表),以獲得值對於每個參數(有4個旋鈕,3同心和1獨立)。此外,你可以自己編輯文本框,旋鈕應該反映你的改變。當然,當您旋轉旋鈕時,您在旋轉期間獲得值的更改,而不是在您的移動穩定後。這意味着要發生一連串的事件,並要處理大量的角落案件。例如,假設h:m:s爲4:38:00,用戶增加小時數。除了簡單的5:38:00,它應該是0:08:00除了增加日子,或者5:30:00如果天已經是最大值。

目前發生的是,所有的邏輯寫在TextChanged事件的文本框,並且旋鈕ValueChanged事件只是改變在相應的文本框中的文本因此其射擊事件TextChanged。所以一般的問題是,如何處理這樣一個場景 - 許多對象彼此相互轉換並以循環方式相互依賴?請注意,當您旋轉旋鈕時,文本框會拒絕更改,從而在旋轉時將旋鈕指針的前一個值重新賦值。

回答

0

我認爲MVVM可以適用於您的情況。您有:

  • 一個模型包含天,小時,分鐘和秒,再加上處理更改其中的任何和反映其對他人的要求的業務邏輯(在.NET中你可以使用Dependency Properties
  • 兩個視圖:文本框和knowbs
  • 2周的ViewModels,每個視圖中,可以從視圖處理事件,並將它們傳遞到模型,以及在模型的處理的變化,並將其反映到視圖

該方法將兩個視圖隔離開d可讓您在一個地方維護圍繞值的邏輯(如果您想添加MVC pattern,則可以使用模型或控制器)。 viewmodels也封裝了你想在UI上處理事件的方式。