Silverlight中使用MVVM(2)—提高

來源:互聯網
上載者:User

轉自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環境

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.