二、Silverlight中使用MVVM(二)——提高
在第一篇文章中的示例中,我們已經(jīng)簡單的了解了應用MVVM模式的流程,我的本意是你已經(jīng)了解了一點MVVM的概念,然后又沒有一個較好的例子學習,可以跟著我一起學習MVVM模式,所以這個部分,都是沒有理論知識的,當然整個例子學完后,我們會回過頭探討一下,將其總結出來。
現(xiàn)在我們主要在前面的示例上進行擴展,前面的示例中我們主要是將一個源對象綁定到DataGrid中的,接下來我們繼續(xù)使用MVVM模式,將DataGrid選擇行的變化體現(xiàn)界面中,其實通過這個需求變化,你會發(fā)現(xiàn)UI與邏輯分離帶來的優(yōu)勢,盡管才開始似乎有點不習慣,但是相信你會不自覺的在項目傾向于中使用MVVM模式。
????? 需求:通過單擊DataGrid,將當前的選擇行的數(shù)據(jù)反映到TextBox中。
????? Model未發(fā)生變化,我們還用前面的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")); ??????????? }
??????????? }
??????? }
????? 因為這里的屬性將發(fā)生變化,所以我們對PageViewModel類實現(xiàn)了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的對象
????? 這些都完成后,其它部分就不用改動了,我們已經(jīng)完成了這個功能,我們可以看看頁面的效果:???????? ??????????????????????????????????????????????????????????????????????
?????????????????????????????????????????
?
???????????????????????????????????????????????????????? 單擊前后的變化?????????????
功能雖較為簡單,但是剛接觸MVVM時, 要很順利的實現(xiàn)也不算是一件容易的事情,后面我會在這個例子的基礎上,通過使用Command實現(xiàn)一個較簡單的查詢。
轉載于:https://www.cnblogs.com/liuguanghai/p/3225975.html
總結
以上是生活随笔為你收集整理的二、Silverlight中使用MVVM(二)——提高的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: d3d导致cairo不正常
- 下一篇: POJ1022 Packing Unit