轉自http://www.cnblogs.com/626498301/archive/2010/08/18/1802204.html
Silverlight中使用MVVM(1)--基礎
Silverlight中使用MVVM(2)—提高
Silverlight中使用MVVM(3)—進階
Silverlight中使用MVVM(4)—演練
在第一篇文章中的樣本中,我們已經簡單的瞭解了應用MVVM模式的流程,我的本意是你已經瞭解了一點MVVM的概念,然後又沒有一個較好的例子學習,可以跟著我一起學習MVVM模式,所以這個部分,都是沒有理論知識的,當然整個例子學完後,我們會回過頭探討一下,將其總結出來。
現 在我們主要在前面的樣本上進行擴充,前面的樣本中我們主要是將一個來源物件綁定到DataGrid中的,接下來我們繼續使用MVVM模式,將 DataGrid選擇行的變化體現介面中,其實通過這個需求變化,你會發現UI與邏輯分離帶來的優勢,儘管才開始似乎有點不習慣,但是相信你會不自覺的在 項目傾向於中使用MVVM模式。
需求:通過單擊DataGrid,將當前的選擇行的資料反映到TextBox中。
Model未發生變化,我們還用前面的Person.cs和Persons.cs兩個類,那麼對於ViewModel,我們給其增加一個屬性
private Person _getOnePerson;
public Person GetOnePerson
{ get { return _getOnePerson; } set { _getOnePerson = value; if (PropertyChanged != null)
{ PropertyChanged(this, new PropertyChangedEventArgs("GetOnePerson")); }
}
}
因為這裡的屬性將發生變化,所以我們對PageViewModel類實現了INotifyPropertyChanged借口
UI層: 這裡我們將GetOnePerson屬性綁定到DataGrid的SelectedItem屬性上
<data:DataGrid AutoGenerateColumns="True" ItemsSource="{Binding Human}" SelectedItem="{Binding GetOnePerson,Mode=TwoWay}" Height="200" Name="dataGrid1" VerticalAlignment="Top" />
<TextBox Text="{Binding GetOnePerson.age,Mode=OneWay}" Name="textBox1" VerticalAlignment="Top" Width="120" />
<TextBox Text="{Binding GetOnePerson.name,Mode=OneWay}" Name="textBox2" VerticalAlignment="Top" Width="120" />
我們在UI上增加了2個TextBox,用於反映頁面上的變化,主要就是注意一下Binding的對象
這些都完成後,其它部分就不用改動了,我們已經完成了這個功能,我們可以看看頁面的效果:
單擊前後的變化
功能雖較為簡單,但是剛接觸MVVM時, 要很順利的實現也不算是一件容易的事情,後面我會在這個例子的基礎上,通過使用Command實現一個較簡單的查詢。
代碼下載:UseMVVMInApp VS2010+SL3環境