2011-11-01 92 views
0

訪問一個窗口的內容我需要它有兩個窗口的應用程序:如何從第二個窗口

窗口1 包含6個倒計時。

窗口2 這裏將設置各個定時器的設置。

什麼是這個功能的最佳解決方案?我將使用C#WPF和.NET 4.0

+1

你嘗試了什麼?什麼阻止你應該是微不足道的? –

+0

應該很簡單,只需要兩種形式並將它們實例化即可。只要它們是公開的,您可以直接引用每個表單上的組件(除非您使用多個線程)。 – Polynomial

+0

@Polynomial從不建議從另一個窗體訪問一個窗體的UI控件。這是不健壯的,並建議使用方法,屬性和OO approahc代替。如果您公開名稱文本框而不是簡單的名稱屬性,這將創建一個依賴關係,並且代碼將不再以相同的方式工作,或者如果文本框被替換爲標籤,代碼將需要太多更改,就像簡單的示例一樣... –

回答

3

MVVM

CountDownView 代表一個計時器觀,簡單的TextBlock綁定到CurrentValue財產或一些更漂亮的/複雜的,而不是TextBlock的

2. CountDownViewModel 代表一個計時器本身,在視圖上顯示屬性int CurrentValue顯示爲倒計數。要實現倒計時,您可以使用Sytem.Timers.TimerElapsed event處理器只是遞減CurrentValue的屬性值

TimersView - 爲第一窗口6個定時器

  • ItemsCountrol/ListView控件,
  • 的ItemTemplate - CountDownView
  • ItemsSource - 綁定到Timers屬性TimersViewModel,基本上TimersViewModel shoudl被設置爲TimersView的DataContext,所以你woudl EB能夠指定以下的結合:(以及每個項目將被綁定到單個定時器)

    <ListView ItemsSource="{Binding Timers}" ... />

4. TimersViewModel - 暴露IEnumerable<CountDownViewModel> Timers屬性

5. SettingsView - 設置面板

PS:INotifyPropertyChanged適用於暴露於Views的所有VM屬性

作業爲您

  1. 瞭解MVVM原則,WPF綁定和命令,這將是對你有所幫助帶齊你的職業生涯
  2. TimersViewModel之間實現關係,SettingsViewModel自己
+0

我會試試這個:D – Sulby

+0

@ FireFly3000:那太棒了!此外,我會建議重新命名你的問題是自我描述性的,而不是這種普遍化 – sll

+0

我可以讓你描述步驟2和3多一點嗎? – Sulby

相關問題