超碰91资源站-超碰97豆花-超碰97人妻-超碰97人人干-超碰97人人香蕉-超碰97天天操-超碰97在线资源站-超碰97资源站共享-超碰97资源站总站-超碰aa在线91-超碰av操-超碰爱爱

半岛外围网上直营

MVVM模式實現主從數據顯示

轉帖|其它|編輯:郝浩|2011-03-11 10:25:51.000|閱讀 829 次

概述:原來想用主從數據顯示的例子記錄頁面間切換的方法的,后來在園子里看到有一篇寫頁面切換的文章介紹得很詳盡了,代碼做了一半,真是雞肋啊。于是想,干脆把代碼改改,弄成個MVVM模式來展示主從數據吧。

# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>

  原來想用主從數據顯示的例子記錄頁面間切換的方法的,后來在園子里看到有一篇寫頁面切換的文章介紹得很詳盡了,代碼做了一半,真是雞肋啊。于是想,干脆把代碼改改,弄成個MVVM模式來展示主從數據吧。

  為了突出重點,示例不考慮美工方面的問題——嘿嘿,美工實在太差了,各位見諒。

  首先來看完成后的效果:

  啟動時候,顯示一個空的頁面,點擊“Show Data”,顯示出所有的班級信息。

SilverlightMVVM

  當用戶點擊其中某一個班級的時候,跳轉到一個班級的學生列表中去。詳細信息頁面底部還提供一個返回按鈕,可以返回到班級選擇的頁面:

SilverlightMVVM02

  整個項目完成了以后,結構如下:

SilverlightMVVM03

  項目大體上分為Models、Views和ViewModels三個部分。其中,Models又被細分為“Entities”、“Interfaces”和“Services”三個部分。

  Models

  Models主要存放兩件東西:1.實體類。2.提供的服務。實體類是指對事物的屬性的抽象構成的類——這個好像比較抽象啊:-)其實,非常簡單,就是一些代表事物的屬性的集合,例如,一個班級的ID和名稱就代表著一個班級,我們就寫成Classes類:

namespace SilverlightNotes.Navigate.Models.Entities
{
     public class Classes
     {
         public int ID { get; set; }
         public string Name { get; set; }
     }
}

  類似的,我們把一個學生抽象成由“編號”、“姓名”和“班組”組成,就有了Student類:

namespace SilverlightNotes.Navigate.Models.Entities
{
     public class Student
     {
         public int ID { get; set; }
         public string Name { get; set; }
         public int ClassID { get; set; }
     }
}
 

  我們看到,實體類只有屬性,沒有方法。通常,我們需要從某個地方去獲取數據來填充或者說生成這些實體類的實例,我們把這一些獲取數據的方法做成服務接口。這些接口被統一存放在Interfaces下面。以下是班級類的接口:

using System.Collections.Generic;
using SilverlightNotes.Navigate.Models.Entities;
namespace SilverlightNotes.Navigate.Models.Interfaces
{
     ///  <summary>
     /// Provide student related services
     ///  </summary>
     public interface IClassesService
     {
         ///  <summary>
         /// Get all classes
         ///  </summary>
         ///  <param name="belongTo"></param>
         ///  <returns></returns>
         List <Classes> GetClasses();
     }
}

  類似的,學生類的服務接口如下:

using System.Collections.Generic;
using SilverlightNotes.Navigate.Models.Entities;
namespace SilverlightNotes.Navigate.Models.Interfaces
{
     ///  <summary>
     /// Provide student related services
     ///  </summary>
     public interface IStudentService
     {
         ///  <summary>
         /// Get all students in a class
         ///  </summary>
         ///  <param name="belongTo"></param>
         ///  <returns></returns>
         List <Student> GetStudentByClasses(Classes belongTo);
     }
}

 然后,我們需要具體的服務來完成這一些接口。這些服務應該是通過訪問數據庫啊之類的數據存儲,來提供實體類實例數據。這里為了演示,只寫了兩個假的數據提供類,來提供一些示例數據,它們分別實現了IClassesService接口和IStudentService接口:

using System.Collections.Generic;
using SilverlightNotes.Navigate.Models.Entities;
using SilverlightNotes.Navigate.Models.Interfaces;

namespace SilverlightNotes.Navigate.Models.Services
{
     public class MockClasses : IClassesService
     {
         ///  <summary>
         /// Return mocked 5 classes
         ///  </summary>
         ///  <returns></returns>
         public List <Classes> GetClasses()
         {
             const int classCount = 5;
             List <Classes> result = new List<Classes>(classCount);
             for (int i = 0; i  < classCount; i++)
             {
  result.Add(new Classes() { ID = i, Name = string.Format( "Class - {0}", i + 1) });
             }
             return result;
         }
     }
}

  和

using System.Collections.Generic;
using SilverlightNotes.Navigate.Models.Entities;
using SilverlightNotes.Navigate.Models.Interfaces;

namespace SilverlightNotes.Navigate.Models.Services
{
     public class MockStudent:IStudentService
     {

         public List <Student> GetStudentByClasses(Classes belongTo)
         {
             const int studentCount = 15;
             List <Student> result = new List<Student>(studentCount);
             //Create faked student objects and add them into the collection
             for (int i = 0; i  < studentCount; i++)
             {
                 result.Add(new Student() { ID = i + 1000, ClassID = belongTo.ID, Name = string.Format( "Student{0}", i + 1) });
             }
             return result;
         }
     }
}

 

  好,Model部分完成。

  View

  理論上講,在MVVM模式中,View和Model是可以同時進行的。因為這兩部分不會直接產生任何關系。我們需要做的,只是把界面“畫&rdquo;出來。本例中,一共需要三個View:MainPage、ClassesView和StudentView。

  在這里MainPage類似于ASP.NET中的“MasterPage”的作用:我們用一個TextBlock來提供頁面的標題,然后,用Border來模擬一個PlaceHolder,初步的想法是,頁面切換時,只需要修改Border.Child屬性即可。呵呵,在此偷個懶,其實所有的界面是用Blend畫出來的。簡單的來看一下MainPage的XAML吧:

   <Grid x:Name="LayoutRoot" Background="White">
         <Grid.ColumnDefinitions>
             <ColumnDefinition Width="25"/>
             <ColumnDefinition/>
             <ColumnDefinition Width="25"/>
         </Grid.ColumnDefinitions>
         <Grid.RowDefinitions>
             <RowDefinition Height="26"/>
             <RowDefinition Height="36"/>
             <RowDefinition Height="314"/>
             <RowDefinition Height="24"/>
         </Grid.RowDefinitions>
         <TextBlock Grid.Column="1" Grid.Row="1" TextWrapping="Wrap" 
FontFamily="Trebuchet MS" FontSize="18.667"/>
  <Border x:Name="bdrPlaceHolder" Grid.Column="1" Grid.Row="2"
  BorderBrush= "Black" BorderThickness="1" />
     </Grid>

  這是一個4行3列的Grid,其實周邊一圈是Margin,剩下2行1列。第1行放了一個TextBlock,用來放標題,例如“MVVM Navigation Demo”。Border的作用,前面已經講過。

  ClassesView中直接放了一個StackPanel,然后堆上一個“Show Data&rdquo;的Button和一個顯示數據的ListBox,就可以交差了。而StudentView則堆放了一個DataGrid和一個Button。

  ViewModel

  ViewModel是View和Model之間的紐帶。我們把View綁定到ViewModel的類上,而ViewModel類同時又包裝了Model的實體和服務。這樣,當用戶對界面操作時,會引發ViewModel的變化。ViewModel調用Model提供的服務,修改其包裝的實體或實體集。由于這些實體或者實體集同樣被綁定到了界面,因此,界面對用戶的操作作出反應。

  那么,如何來創建ViewModel類?讓我們以MainPageViewModel類為例:

一、依葫蘆畫飄——看View搭出ViewModel類

  打開MainPage,觀察,它有一個TextBlock,因此,我們需要一個string類型的屬性;它有一個Border作為PlaceHolder,因此,我們需要一個UIElement類型的屬性;它可以加載ClassesView,因此,我們有一個加載ClassesView的方法(NavigateToClasses);它又可以加載StudentView,因此,我們又有了一個加載StudentView的方法(NavigateToStudnet)。創建出的類如下:

using System.ComponentModel;
using SilverlightNotes.Navigate.Views;
using SilverlightNotes.Navigate.Models.Entities;

namespace SilverlightNotes.Navigate.ViewModels
{
     public class MainPageViewModel : INotifyPropertyChanged
     {
         #region Construction
         private ClassesView _classesViewCache;
         public MainPageViewModel()
         {
             PageTitle =  "MVVM Navigation Demo";
         }
         #endregion

         #region Properties
         public string PageTitle { get; set; }
         public UIElement DisplayContent { get; set; }
         #endregion 

         #region Faked Commands
         public void NavigateToClasses()
         {
         }

         public void NavigateToStudent(Classes selectedClass)
         {
         }
         #endregion
     }
}

二、綁定屬性,添加方法調用代碼

  ViewModel類創建之后,我們就可以把屬性和對應的控件綁定起來。例如,把PageTitle綁定到MainPage的TextBlock上:

<TextBlock Grid.Column="1" Grid.Row="1" Text="{Binding PageTitle}"
  TextWrapping="Wrap" FontFamily="Trebuchet MS&quot; FontSize="18.667"/>  

  綁定以后,需要修改ViewModel類,對于一般的屬性,修改時需要觸發“PropertyChanged”事件,而對于集合類屬性,則最好使用ObservableCollection類型的集合。以MainPage中的PageTitle為例,首先要讓其實現“INotifyPropertyChanged”接口,而在屬性修改時,需要觸發相應事件:

using System.ComponentModel;
using SilverlightNotes.Navigate.Views;
using SilverlightNotes.Navigate.Models.Entities;

namespace SilverlightNotes.Navigate.ViewModels
{
     public class MainPageViewModel : INotifyPropertyChanged
     {
         #region Events
         public event PropertyChangedEventHandler PropertyChanged = delegate { };
         #endregion

         #region Construction
         private ClassesView _classesViewCache;
         public MainPageViewModel()
         {
             PageTitle =  "MVVM Navigation Demo";
         }
         #endregion

         #region Properties
         private string _pageTitle;
         public string PageTitle
         {
             get
             {
                 return _pageTitle;
             }
             set
             {
                 _pageTitle = value;
                 PropertyChanged(this, new PropertyChangedEventArgs( "PageTitle"));
             }
         }
...
         #endregion 
...
     }
}

于不想每次判斷事件是否被注冊,因此,事件聲明的時候,就給它加了個匿名方法,也省得考慮什么線程安全等麻煩事了。

  由于我們期望在主頁面載入的時候就自動加載班級的頁面,因此,我們在MainPage的構造函數里添加少許代碼:

 public partial class MainPage : UserControl
     {
         public MainPage()
         {
             InitializeComponent();
             InitializeDataBind();
         }

         private void InitializeDataBind()
         { 
             var mainPageViewModel = new MainPageViewModel();
             this.DataContext = mainPageViewModel;
             mainPageViewModel.NavigateToClasses();            
         }
     }

  我們首先創建了一個MainPageViewModel的實例作為本頁的ViewModel賦給DataContext,然后,調用其NavigateToClasses,讓其加載班級頁。

  另外一種比較典型的情況是,用戶點擊按鈕,調用方法改變界面狀態。例如我們在School頁面里的“Back”按鈕。

三、調用Model,實現方法

  我們是想著讓MainPage來顯示班級視圖,但實際上,這個方法還沒有實現。讓我們來看一下其實現:

using System.ComponentModel;
using SilverlightNotes.Navigate.Views;
using SilverlightNotes.Navigate.Models.Entities;

namespace SilverlightNotes.Navigate.ViewModels
{
     public class MainPageViewModel : INotifyPropertyChanged
     {
         #region Construction
         private ClassesView _classesViewCache;
         public MainPageViewModel()
         {
             PageTitle =  "MVVM Navigation Demo";
         }
         #endregion

         #region Properties
...
         #endregion 

         #region Faked Commands
         public void NavigateToClasses()
         {
             if (_classesViewCache == null)
             {
                 ClassViewModel classViewModel = new ClassViewModel();
                 ClassesView classesView = new ClassesView();
                 classesView.DataContext = classViewModel;
                 _classesViewCache = classesView;
                 DisplayContent = classesView;
             }
             else
             {
                 DisplayContent = _classesViewCache;
             }
         }

         public void NavigateToStudent(Classes selectedClass)
         {
...
         }
         #endregion
     }
}

  首先,檢查了一下有沒有頁面的緩存,如果沒有,那么創建一個新的頁面對象和它對應的ViewModel,設定好DataContext以后,我們就重新設置DisplayContent屬性。由于DisplayContent屬性會觸發“EventChanged”事件,界面會回應此事件作出相應的變動。

  這個頁面由于沒有涉及到具體后來數據的操作,因此,并沒有直接調用Model里的服務。我們再來看一下比較典型的ViewModel:

using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ComponentModel;
using SilverlightNotes.Navigate.Models;
using SilverlightNotes.Navigate.Models.Entities;
using SilverlightNotes.Navigate.Models.Interfaces;

namespace SilverlightNotes.Navigate.ViewModels
{
     public class ClassViewModel:INotifyPropertyChanged
     {
         public ClassViewModel()
         {
             Data = new ObservableCollection <Classes>();
         }

         #region Data
         public ObservableCollection <Classes> Data { get; protected set; }
         #endregion

         #region Facked Commands
         public virtual void ShowData()
         {
             //clean original data first
             Data.Clear();
             //Get data
             IClassesService classService = ServiceProvider.GetClassesService();
             //Add them into the Observable collection
             foreach (var item in classService.GetClasses())
             {
                 Data.Add(item);
             }
         }
         #endregion

  public event PropertyChangedEventHandler PropertyChanged = delegate { };
     }
}

  Data屬性即對外暴露的數據集。ShowData方法中,首先清空原來Data中的數據;然后,創建了一個實現IClassService的服務對象。最后,把數據項一一更新到Data集合里去。我們再次看到,由于ViewModel和View是綁定在一起的,因此,我們在寫代碼的時候,不需要去考慮頁面的更新。

  意外

  本來,這個Demo到此已經全部結束,運行一下,出現卻得到一個十分詭異的異常——AG_E_RUNTIME_MANAGED_UNKNOWN_ERROR:

  看上去像是XAML的解析出了問題,跟著行列到MainPage.xaml里找了一通,也沒看出什么問題來。G了一下,才知道是Broder.Child屬性不能正常綁定。應該是一個Silverlight的Bug。這下暈了,這樣的話,如果要用ViewModel來控制Navigation,就得在ViewModel里設置頁面上“Border.Child”屬性,這下子View和ViewModel由綁定這種較松的耦合變成代碼的強耦合……后來考慮了一下,借鑒INotifyProperty接口的實現方法,在MainPageViewModel的類里添加一個事件,當DisplayContent修改時,觸發這個事件。在View里只需要少量的代碼,就可以實現類似于單向綁定的效果:

  修改后的MainPageViewModel類:

using System.ComponentModel;
using SilverlightNotes.Navigate.Views;
using SilverlightNotes.Navigate.Models.Entities;

namespace SilverlightNotes.Navigate.ViewModels
{
     public class MainPageViewModel : INotifyPropertyChanged
     {
         #region Events
         ///  <summary>
     &nbsp;    /// Provide to inform observers that DisplayContent changed

 we can't bind a user control to a child of another control.
         ///  </summary>
         public event EventHandler DisplayContentChanged = delegate { };

         public event PropertyChangedEventHandler PropertyChanged = delegate { };
         #endregion

         #region Construction
         private ClassesView _classesViewCache;
         public MainPageViewModel()
         {
             PageTitle =  "MVVM Navigation Demo";
         }
         #endregion

         #region Properties
         private string _pageTitle;
         public string PageTitle
         {
...
         }

         private UIElement _displayContent;
         public UIElement DisplayContent
         {
             get
             {
                 return _displayContent;
             }
             set
             {
                 _displayContent = value;
                 PropertyChanged(this, new PropertyChangedEventArgs( "DisplayContent"));
                 DisplayContentChanged(this, new EventArgs());
             }
         }
         #endregion 

         #region Faked Commands
         public void NavigateToClasses()
         {
...
         }

         public void NavigateToStudent(Classes selectedClass)
         {
...
         }
         #endregion
     }
}

  另外,在MainPage里,也需要做一點點的小功課——誰讓綁定不能用呢:

using SilverlightNotes.Navigate.ViewModels;

namespace SilverlightNotes.Navigate
{
     public partial class MainPage : UserControl
     {
         public MainPage()
         {
             InitializeComponent();
             InitializeDataBind();
         }

         private void InitializeDataBind()
         { 
             var mainPageViewModel = new MainPageViewModel();
             this.DataContext = mainPageViewModel;
             mainPageViewModel.DisplayContentChanged +=
  new EventHandler(mainPageViewModel_DisplayContentChanged);
             mainPageViewModel.NavigateToClasses();            
         }

         private void mainPageViewModel_DisplayContentChanged(object sender, EventArgs e)
         {
             MainPageViewModel mainPageViewModel = this.DataContext as MainPageViewModel;
             if (mainPageViewModel != null)
             {
                 this.Dispatcher.BeginInvoke(
                     delegate
                     {
                         bdrPlaceHolder.Child = mainPageViewModel.DisplayContent;
                     });
             }
         }
     }
}

  寫在最后

  MVVM模式原生應用于WPF,由于Silverlight可以看作是WPF的子集,這一模式同樣可以較好的應用于Silverlight。但是由于Silverlight的不成熟,還存在一些BUG,導致模式中有一些部分不能夠正常應用。但是,我們可以通過一些Work-around,一些靈活處理,在盡可能多的利用模式給我們帶來的便利的同時,完成程序的全部功能。


標簽:

本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@ke049m.cn

文章轉載自:網絡轉載

為你推薦

  • 推薦視頻
  • 推薦活動
  • 推薦產品
  • 推薦文章
  • 慧都慧問
掃碼咨詢


添加微信 立即咨詢

電話咨詢

客服熱線
023-68661681

TOP
利記足球官網(官方)網站/網頁版登錄入口/手機版登錄入口-最新版(已更新) 真人boyu·博魚滾球網(官方)網站/網頁版登錄入口/手機版登錄入口-最新版(已更新) 最大網上PM娛樂城盤口(官方)網站/網頁版登錄入口/手機版登錄入口-最新版(已更新) 正規雷火競技官方買球(官方)網站/網頁版登錄入口/手機版登錄入口-最新版(已更新) 雷火競技權威十大網(官方)網站/網頁版登錄入口/手機版登錄入口-最新版(已更新) boyu·博魚信譽足球官網(官方)網站/網頁版登錄入口/手機版登錄入口-最新版(已更新) 權威188BET足球網(官方)網站/網頁版登錄入口/手機版登錄入口-最新版(已更新) 正規188BET足球大全(官方)網站/網頁版登錄入口/手機版登錄入口-最新版(已更新) 国产精品亚洲精品日韩已满 | 国产大片91精品免费观看3 | 国产无套粉嫩白浆在线观看 | 国产精品毛片91 | 国产欧美日产综合 | 精品久久久久久免费看 | 国产成人h在线观看网站站 国产成人mv毛毛a片 | 国产女同精品一级在线 | 99久久精品国产一区二区 | 国产精品乱 | 国产一区二区三区亚洲欧美 | 国产美女爽到喷出水 | 成人av在线一区二区三区 | 国产高清午夜自在在线 | 国产成人精品免费视频大全麻 | 国产精品一区二区三区99 | 国产av无码专区 | 99久久精品自在自看国产 | 国产三级电影hd在线观看 | 国产女同无遮挡互慰高潮视频 | 高清欧美剧正版在线观看 | 国产一区二区三区视频在线观看 | av在线三级毛片 | 国产成人免费高清 | 99久久精品免费精品国产电影 | 国产欧美精品一区二区三区 | 国产成人一区二区三区免费视频 | 成人黄色一级电影在线免费观看 | 国产微拍精品一区二区 | 91精品在线无码视 | 国产福利一区二区久久 | 2025自拍偷在线精品自 | 18禁超污无遮挡无码网址 | 国产精品日韩欧美一区二区三区 | 东京热中文字幕a专区 | 国产成人在线视频免费观看 | 91成人在线视频 | 国产精品入 | 国产精品三级九九 | 国产精品无码一区二区在线观 | 99亚洲国产精品色一区二区三 | 成人精品视频在线观看不卡 | 91狠狠色丁香婷婷综合久久 | 99久久国产精品无码 | 国产喷水在线看无码孕妇 | 国产午夜激无码av毛片不卡 | 国产精品一区在线观看 | 精品国内在视频线 | 国产成人一区av | 国产成人手机高清在线观看网站 | 国产精品无圣光一区二区 | 国产一区二区av在线播放 | av高清无码在线加勒比天堂 | 精品无人国产偷自产在线日本 | av色欲无码人妻中 | 91麻豆精品国产剧情 | 91精品免费在线观看不卡 | 国产精品成人永久在线 | 国产综合欧美日韩视频一区 | 精品日韩一区二区三区视频 | 高潮喷水抽搐 | 91大神精品无码在线观看 | 国产亚洲欧美一区二区在线观看 | 国产av老女人 | 国产精品熟女一区二区 | 国产亚洲日韩一区二区三区在线观 | 国产日韩欧美精品区性色 | 国产自产视频在线观看香蕉 | 波多野结衣中文字幕一区二区 | 99久久无色码中文字幕人妻 | 成人小說亞洲一區二區三區 | 国产毛片天天看视频 | 国产在线观看在线播出 | 福利小视频在线播放 | 国产成人福利资源在线观看 | 国产精品原创巨作av无遮挡 | 国产精品免费不卡av | h无码精品动漫在线观看 | 国产在线播放综合网房 | 极品少妇被猛得直流白浆 | 国产毛片一区二区三区 | 国庆产少妇xxxxx性开放 | 国产美女性爱亚 | 国产精品三级久久久久久电影 | 国产狂喷潮视频在线播放 | 国产福利在线免费观看 | 精品国产午夜理论片不卡 | 国产精品成人自产拍在线观看0 | 91丝袜在线播放 | 国产国产成人久久精品 | 91理论片午午伦夜理片久久 | 国产成人垃圾片一区二区三区 | 精品无码国产社区野花在线观看 | 国产精品美女久久久m | 国产va免费精品高清在线 | 精品国产一区二区三区不卡蜜臂 | 国产福利视频 | 国产成人精品日本亚洲专区 | 国产ol丝袜高跟在线观看 | 国产三级小视频在线观看 | 国产精品福利在线观看入口 | 国产无套粉嫩白浆在线 | 国产精品爽爽ⅴa在线观看 国产精品爽爽va吃奶在线观看 | 国产尤物在线观看视频 | 18禁成人黄网站免 | 东京热无码中文字幕av免费 | 变态调教无码专区在线观看 | 超超碰免费超超碰免费 | 国产sm重味一区二区三区 | 国产精品黄色大 | 精品无码久久久久国产手机版 | 国产激情视频在线播放 | 91精品国产综合久久香蕉爱欲 | 成年人樱桃app下载安装 | 国产成人精品久久综合 | 国产在线视精品在二区 | 国产aⅴ久久免费精 | 福利视频欧美精品 | 国产精品成人不卡在线观看 | 国产成人福利在线一区 | 国产经典不卡的在线视频 | 东京热男人的天堂精品 | 国产在线观看免费一区二区三区 | 国产成人咱精品视频免费网站 | av午夜福利一片免费看久久 | 国91视在线观看 | 精品99一区二区三区四区 | 成人在线看片 | 成人国产精品动漫欧美一区 | 国精品人妻无码一区二区三区蜜 | 国外b站刺激战场直播app | 国产午夜福利短视频在线观看 | 91久久香蕉国产线看 | 国产精品日日蜜臀 | 国产成人a区在线观看视频 国产成人a人 | 91福利一区二区三区 | 国产成人人人97超碰超爽8 | 国产精品线在线精品 | 99久久国产亚洲综合精品 | 国产亚洲3p无码一区二区三区 | 精品亚洲a∨在线播放不卡 精品亚洲aⅴ无码午夜在线 | 97人妻免费线观看2025 | 1区2区日韩欧美国产 | 高清无码在线观看亚洲 | 国产麻豆精品一区二区三区v视 | 国产精品无码区久久av | 成在人钱av无码免费高潮喷水 | 精品日韩欧美国产一区二区 | 国产精品嫩草影院免费观看 | av中文字幕一区人妻 | 国产精品成久久久久三级6二k | 激情性无码视频在线观 | 国产成人精品一二三区 | 国产亚洲午夜影视在线观看 | 国产午夜精品自在自线专区 | 3d动漫精品啪啪一区二区免 | 国产在线日韩制服 | 国产精品日产三级在线观看 | 国产真人一级a爱视频免费看 | 国产精品三级美女网站全黄真人 | 国产熟女aa级毛片 | 国产成人深夜福利短视频99 | 国产三级在线现免费观看伊人 | 97人妻无码 | 国产成人午夜福利高清在线 | 精品国产aⅴ一区二区三区v免费 | 国产精品自产拍在线网站 | 2025国产视频不卡在线 | 国产精品无码永久免费不卡 | av无码av天天av天天爽 | 国产一区二区午夜福利在线观看 | 国产日韩久久久一区二区三区 | 国产精品偷伦视频插放 | 国产中文字幕手机视频 | 2025国产午夜福利 | 高潮视频一区在线观看 | 18禁裸乳无遮挡啪啪无码免费 | 91尤物无码不卡在线 | 91亚洲国产亚洲国产 | 国产精品欧美亚洲韩国日本不卡 | 国产成人片在线观看视频 | av无码午夜福 | 91精品无码人妻系列九色 | 国产色秀视频在线观看 | av在线亚洲中文 | 精品丝袜中文字幕乱码 | 国产成本人三级在 | 国产白嫩在 | 国产极品粉嫩美女在线播放 | 2025最新国产成人精品免费 | 国产午夜激无码av毛片护士 | 99精品中文字幕在线推荐 | av小电影在线播放 | 精品日韩国产一区二区三区 | 顶级欧美熟妇高潮xxxxx | 国产一区二区三区地区 | 国产一区视频在线播放 | 国产精品视频一区二区三区 | 国产精品日韩亚洲一区二区 | 国产高清精品福利私拍国产 | 高清中文无码在线观看 | 国产精品专区在线观看 | 国产一区亚洲二区三区毛片 | 精品国产一区二区三区2025 | 国产v亚洲v天堂a | 高清在线亚洲中文 | 国产人妻精品一区二区三区不卡 | 东京热人妻av中文系列 | 丰满熟妇人妻中文字幕 | 国产精品九九无码专区 | 成人无码电影在线观看网 | 国产真街拍裙底系列在线观看 | 东京热人妻无码一区二区av | 国产精品成熟老妇女 | 国产精品自产拍在线网站 | 国产一区内射最近更新 | 2025年国内精品视频 | 精品动漫一区二区无码视频 | 91嫩草国产 | 国产午夜免费啪频欢看视 | 精品视频一区二区三区在线播放 | 精品亚州毛片在线免费观看 | 国产成人永久免费高清 | 2025国精品夜夜天天人人 | 国产午夜福利一区二区在线观看 | 韩国三级激情理论电影中文字幕 | 国产91精品青草社区视频网址 | 精品熟女少妇a∨免费久久 精品熟女少妇a∨免费久久1 | 2025色婷婷综合久久久 | 国产一区二区三区内射 | 97色精品 | 高清国产日韩欧美 | 国产极品粉嫩美女在线播放 | 国产成人综合日韩精 | 国产成人精品手机在线播放 | 国产一区二区免费在线 | 国产aⅴ夜夜欢一区二区三区 | 国产精品美女久久久久久吹潮 | 成人嫩草研究院久久久精品 | 国产精品影片在线免费观看 | 国产人妻精品久久久久野外 | 国内精品久久人妻 | 18国产精品白浆 | 国产黄色网站在线免费观看 | 国产高清精品一区二区三区 | 精品国产伦一区二区三区在线观看 | 高清偷自拍亚洲精品三区 | 国产专区日韩专区 | 91视频下载免费高清在线观看 | 国产精品久久大陆妓女 | 国产麻无矿码直接观看 | 18禁美女黄网站色大片免费观看 | 国产一卡2卡3卡四卡精品网站 | 精品一级片内射视频播91视频 | 国产熟女精品视频大全 | 91精品国产91热久久久久 | 精品无码国产一区二区三区麻豆 | 国产最爽的乱婬视频国语对白 | 国产在线一区二区综合免费视频 | 国产午夜成人免费看片无遮挡 | 国产美女久久影院 | 国产人妻精品午夜福 | 国产综合久久久 | 国产无码不卡一区二区三区 | 国产一区二区三区亚洲欧美 | 国产免费高清视频在线观看不卡 | 国产亚洲欧美在线观看一区二区 | 成人免费高清视频 | 911亚洲无码 | av在线免费观看综合区 | av在线最新网址不卡 | 东京热无码中文字幕电影 | 2025年日本伦理片村庄 | 2025自拍偷在线精品自拍偷 | 国产成人久久精品激情91 | www夜插内射视频网站 | 国产毛片毛多水多的特级毛片 | 国产av影片网址 | 丰满少妇乱子伦精品无码专区 | 国产精品一区二区三区免费视频 | 国产av午夜精品一区二区三区 | 国产成人a亚洲精品无码小说 | 极品丝袜写真大尺度无内 | 91久久如何满足用户需求 | av无码专区亚洲av波 | 国产成人无码aa精品一区19 | www.亚洲一区二区三区 | 国产成人精品午夜视频免费 | 国产无码在线观看免费在 | 国产精品三级a三级三级午夜 | 成人午夜在线观看国产 | 丰满人妻一区二区三区53视频 | 国产精品视频一区二区三区经 | 国产成年无码aⅴ片 | 国产福利一区二区三区四区 | 成年女人免费视频播放人 | 国产成a人片在线观看视频 国产成a人片在线观看视频99 | 国产麻豆精品福利在线 | 国产aⅴ无码久久丝袜美腿 国产aⅴ无码专区 | 国产成人精品毛片曰本亚洲 | 精品久久久久久无码中文野结衣 | 国产成人五月综合网 | 国产成a人亚洲精v品 | 国产一级a精品免费高清欧美一 | 精品一区二区三区免费毛片爱 | 国产超级乱淫视频播放免费 | 国产福利视频一区 | 91热久久免费频精 | 国产精品视频全国免费 | 国产自产一线在线视频 | 国产精品美女久久久久久麻 | 国产1024香 | 国产高清黄色视频 | 国产精品一区二区三区剧情片 | 国产成人观看在线视频 | 国产艳福片内射视频播放免费 | 精品国产高清久久久久久小说 | 国产麻豆精品高清在线播放 | 国产欧美综合在线观看第七页 | 国产精品毛片一区 | av之家免费黄片 | 国产精彩视频一区二区三区 | 国产三级在线播放放视频 | 国产成人精品一区二区三区免费看 | 国产另类av一区二区三区 | 国产成年女黄特黄 | 国产成人片无码免费 | 国产成人毛片无码视频软件 | 精品无码喷水 | 国产成人综合久久精品免费 | 国产v片在线播放免费动态图 | 精品精品国产理论在线 | 国产熟人av一二三区 | 国产一区二区三区免费高清在线 | 国产精品一区不卡在线观看 | 国产一区二区三区成人久久片老牛 | 2025天堂中文幕一二区在线观 | 精品国产美女av久久久久 | 国产精品日韩2025 | 91精品久久一区二区三区 | 高潮射精日本韩国在线 | 精品无码综合一区二区三区 | 国产无码一区二区久久 | 国产精品麻豆三级二区视频 | 国产精品三p一区 | 国产精品丝袜拍在线观看 | 国产精品多p对白交换绿帽 国产精品多人p | 国产精品嫩模在线播放 | av无码免费看一区 | av在线播放日韩亚洲欧 | 国产精品秘入口麻豆古装 | 岛国无码免费不卡av | 成人午夜无码国产 | 国产精品欧美亚洲韩国日本久 | av片区在线观 | 丰满多毛少妇做爰视频 | 国产精品日韩欧美制服 | 国产精品亚洲w码日韩中文app | 91视频国产大片 | 91素人约啪| 国产毛片片精品天天看视频 | 国产丝袜大长腿精品丝袜美女 | 国产成人精品手机在线观看 | 成人免费无码毛片 | 91久久如何满足用户需求 | 成人无码免费午夜福利在线看片 | 动漫精品无码中文字幕一区 | 国产成人a视频 | 91麻豆剧果| 国产精品午夜一级毛片密呀 | 国产美女做a免费视频软件 国产美日韩精品久久 | 精品国产另类欧美精品 | 国产亚洲精久久久久久无码av | 国产一区二区三区成人久久片老牛 | 国产福利小视频91 | 国产原创中文字幕在线观看 | 国产麻豆文化传媒 | 精品国产三级黄色片 | 91精品婷婷色国产综合 | 国产日韩一区在线精品欧美玲 | 国产a级片免费观看 | 国产成人综合亚洲 | 91精品国产亚洲爽啪在线观看 | 国产主播一区二区三区在 | 国产高清无码一区二区 | 国产精品免费看欧美久久久久 | 国产精品日韩欧美 | 99久久亚洲综合精品成人 | 成人午夜电影大全在线观看 | 国产av无码一区二区三区最天天 | 精品国产片免费在 | 国产精品视频无圣光一区 | 国产精品精品自在线拍 | 精品午夜国产人人福利一区 | 爆乳熟妇一区二区三区霸乳 | www夜片内射视频在观看视频 | 国产成人影院一区二区三区在线 | 国产帅男男gay网站视频 | 国产aⅴ无码精品一品二区 国产aⅴ无码精品一区二区 | 国产成人精品高清在线观看91 | 国产精品无码专区av在线播 | 国产夫妻内射一级一片 | 国产尤物aⅴ在线观看不卡 国产尤物av尤物在线看 | 国产欧美日本一区二区三区免费 | 99久久精品免费看国产99 | av在线播放每日更新 | 国产微拍精品一区一再猛点 | 国产精品亚洲专区无码影院 | 91久久精品日日躁夜夜躁欧 | 国产高潮视频在线观看 | 国产成人免费高清激情视频 | 国产欧美亚洲三区久在线观看 | 国产剧情黄页在线观看 | 国产一区二区三区不卡视频在线 | 成人无码h免费动漫在线观看 | 国产午夜鲁丝无码拍拍 | 国产免费午夜福利蜜芽无码 | 国产精品偷伦视频免费手机播放 | 国产一区嫩模在线播放 | 国产999精品久| 国产亚洲成a人片在线观看 国产亚洲成v人片在线观黄桃 | 国产欧美日韩在线视频重口味 | 国产精品无码免费专区 | 国产精品人人做人人爽人人 | 99国产精品农村一级毛片 | 高潮国产白浆抽搐福利日本 | 国产一级内谢a级高清毛片 国产一级内谢a级高清毛片古装 | 国产成人卡2卡3卡4 国产成人另类视频在线播放 | 国产一卡二卡3卡四卡免费 国产一卡二卡三卡 | 国产精品无码久久诱惑 | 国产精品v欧美精品v日韩苍 | 国自产精品手机在线观看 | 国产69无码一区 | 国产成人5x人网站视频 | 国内免费无码自拍视频网 | 91精品福利资源在线观看 | 高清国产无码乱伦 | 国产亚洲视频在线观看网 | 成a人片在线观看无码专区 成a人片在线观看中文漫画 | aa区一区二区三无码精片 | 成年女人色毛片免费看 | 国产一级片内射视频蜜臀在线 | 国产迷奸在线观看 | 国产麻豆叶一涵剧情在线观看 | 不卡日韩在线精品二区 | 精品国产福利一区二区在线 | 国产在线视频欧美一区 | 国产成人自拍视频 | 国产一区二区三精品久久久无广 | 国产a级毛片久久久毛片精片 | 国产一区二区三区视频在线观看 | 91丝袜无码国产在线播放 | 国产高清a级毛片视频 | 国产亚洲91视频 | 国产黄色大片网站 | 国产精品v一区二区三区 | 国产精品多p对白交 | 国产在线视频一区二区三区98 | 国产精品色吧国产精品 | 国产黄色电影在线观看 | 国产精品无码专区 | 精品视频一区二区三区中文字 | 成人午夜免费app | 国产精品成人一区 | 国产成人无码精 | 东京热一区二区三区无码视频 | 国产无码久久99 | a级毛片高清免费视频就看 a级毛片高清免费视频在线 | 成人精品视频在线 | 国产精品视频一区二区三区不卡 | 91精品午夜小视 | 国产高清一区二区三区视频 | 国产无套水多在线观看 | 国产午夜福利 | 国产精品人妻无码一区二区三区 | 3p黑人老外视频在 | 国产精品视频一区国模私拍丝袜 | a级毛片无码片2025 | 国产成人尤物在线视频 | 国产一区二区三区免费看视频 | 国产成人va亚洲电影 | 国产日韩新片无码 | 91久久偷偷做 | 成人一在线视频日韩国产 | 精品三级亚洲免费 | 国产精品制服丝袜美 | 成人做爰www免费看视频韩国 | 国产精品日韩欧美一区二区三区 | 国产91精品高跟丝袜在线 | 国产成人乱码一区二区三区在 | 精品亚洲区三区二区一 | 国产一区高清视频在线观看 | 成人在线一区二区三区四区 | 国产精品精品国产一区二区 | 白丝爆浆18禁一区 | 国产在线播精品第三 | 国产黄片第一区二区三区 | 91精品综合久久久久五月天 | av无码专区国产乱码电影 | 精品人妻无码一区二区三区99 | 99久久精品自在自看国产 | 国产综合久久亚洲综合 | 99精品视频在线在线 | 精品福利一区二区三区 | 国产精品一在线观看 | 91在线播放国产日本欧美 | 国产经典国语三级级在线电影 | 18禁裸乳无遮挡自慰免费动漫 | 国产亚洲日韩网曝 | 国产熟女露脸大叫高潮 | 精品国产一区二区三区免费看 | 国产a级毛片不收费 | 高清欧美不卡一区二区三区 | 国产精品福利在线观看免费 | 国产在线播放一区国产 | 精品无人区乱码1区2区3区在线 | 国产精品久免 | 国产成人精品自在线拍 | 91素人约啪 | 91av在线观看 | 国产精品无码素人福利 | 成人一区欧美高清夜夜片a 成人一区三区 | 国偷自产一区二区免费视频 | 国产精品va无码一区二区 | 国产精品欧美v片免费观看 国产精品欧美福利 | 国产三香港三韩国三级 | 东京热一本到无码不卡视频 | 国产a级一级久久毛片 | 国产裸拍裸体视频在线观看 | 国产成人毛片在线视频软件 | 91大片淫黄大片在线天堂 | 国产精品视频色拍拍 | 18禁止观看强奷免费国产大片 | 国产原创剧情化妆师在线观看 | 国产av无码精品麻豆 | 99久久精品国产 | 国产1卡2卡三卡四卡久久网站 | 99久久国产热无码精品免费 | 精品人妻大屁股白浆久久 | 国产欧美日韩亚洲中文一区 | 国产黄在线观看免费观看 | 国产精品国产自 | 精品国产成人系列 | 国产精品自产在线观看一 | 国产精品国语对白露脸在线播放 | 国产美日韩精品一区二区在线观看 | 91无码 | 精品少妇人妻aⅴ无码久久 精品少妇人妻av | 国产美女裸舞久久福利 | 交换国产精品视频一区 | 国产成人精品202 | 国产精品午夜电影 | 国产迷奸在线观看 | 国产高清成人mv在线观看 | 成人免费va视 | 国产精品高清国产三级国产 | 国产精品高潮呻吟久久 | aⅴ在线视频| 东京热一频道一区二区三区 | 高清无码黄色网站 | 国产麻无矿码直接观看 | 成人免费a级毛片 | 国产精品一级a∨片免费看 国产精品一级aa片 国产精品一级av在线播放 | 国产精品人人做人人爽人人 | 国产狂喷 | 精品人妻少妇av一区二区三区 | 国产成人亚洲综合一区 | 91久久婷婷国产综合青草 | 国产精品男女猛烈高潮激情 | 99久久婷婷国产综合精品电影 | 激情欧美经典日韩 | 国产三级精品电影视频 | 91精品欧美在线观看免费 | 国产成人综合在线观看网站 | 岛国少妇精品久久中文字幕 | 国产毛a片啊久久久久久保和丸 | 精品国产女主播在线直播观看 | 91精品国产91久久综合牛牛 | 精品国产日韩欧美一区二区 | 国产精品无码视频一区二区三区 | 国产真人无码作爱视频免费 | 92国产福利一区二区三区 | 丰满肥臀风间由美系列 | 成人国产一区二区三区精品一 | 国产av一区二区三区久久 | 99久久精品国产波多野结衣 | 国产成人精品日本亚洲尤物 | 国产av无码专区亚洲av毛片 | 91国语精品自产拍在线观看一 | 国产精品精品国产一区二区 | 成人综合久久久 | 国产av巨作丝袜秘书 | 囯产精品久久久久久久久久妞妞 | 动漫av纯肉无码国产av | a亚洲欧美中文日韩 | 91在线亚洲 | 国产精品欧美一区麻豆系列 | 国产无码在线观看免费在 | 99久久久精品免 | 国产精品伦人一久二久三久 | 国产丝袜无码一区二区视频 | 国产高清色播视频免费看 | 精品人妻系列 | 国产成人理论在线观看视频 | 国产精品合集久久久久青苹果 | 国产精品精华液网站 | 国产成人精品一二三区 | 国产视频一区二区三区 | 成熟丰满熟妇高潮xxxxx | 波多野结衣在线观看一区二区三区 | 国产精品乱码一本二本三本色 | 国产成人久久精品麻豆一区 | 国产午夜精品理论在线观看 | 91精品福利资源在线观看 | 国产在线原创剧情麻豆 | 高清无码电影免费专区 | 国产人妖xxxx| 国产精品毛多多水多 | 国模丰满少妇私拍 | 97无码人妻福利免费公开在 | 国产一级无码免费视频 | 国产精品视频一区二区三区经 | 18禁止观看强奷免费国产大片 | 99久久国产精品免费 | 国产日韩一区二区三区免费高清 | av无码国产精品性色aⅴ | 91精品国产自产 | 精品视频一区二区三区免费观 | 国产aⅴ精品一区二区三区色成熟 | 精品亚洲国产成人av不卡 | 国产三级在线播放放视频 | 国产超精品无码不卡av | 国产自偷在线拍精品 | 国产精品丝袜无码不卡一区 | 国产1区2区3区国产精品 | 韩国精品无码一区二在线 | 国产精品特级露脸视频 | 国产精品日韩欧美一区二区三区 | 国产极品喷水视频 | 国产欧洲精品自在自线官方 | 东京一本到熟无码免费视频 | 国产精品熟女视频一区二区 | 国产精品办公室沙发 | 国产无码在线观看免费在线 | 国产日韩一区在线精品 | 国产真实愉拍系列在线视频 | 岛国在线观看一 | 国产精品成人永久在线 | 国产一级亚洲视频在线观看 | 国产av无码专区亚洲av男同 | 国产一级久久毛片 | 国产剧情av网址网站 | 国产丝袜美女一区二区三区 | 国产欧美日韩一区 | 99久久精品一区二区毛片吞精 | 国产专区视频香蕉 | 国产人一极精品视频 | av在线观看网址 | 国产黄三级高清在线观看播放 | 国产高潮流白浆啊免费a片动态 | 99久久夜色精品国产亚洲96 | 丰满人妻啪啪 | 精品国产你懂 | 精品少妇无码v无码专区 | av中文| 99精品一区二区三区无码吞精 | 精品欧洲av无码一区二区男男 | 国模两腿玉门打开图无码 | 国产亚洲日韩精品欧美一区二区 | 精品国产品欧美日产在线 | av日韩国产一区二区三区 | 国产91丝袜在线播放00 | 成人综合亚洲欧美天堂 | 国产成人精品三级在 | 91久久综合天天婷婷 | 国产精品视频全国免费观看 | 国产精品高清一区二区人妖 | 国产专区综合另类日韩一区 | 精品无码人妻夜 | 国产91精品无码 | 国产精品视频一区二区三区四 | 国产成年无码久久久久毛片 | 国产超aⅴ男人的天堂 | 成人国产一区二区三区久久久 | 国产成本人片免费av | 国产精品入口免费软件 | 国产成人无码av在线播放不卡 | 国产成人午夜性a一级毛片 国产成人午夜在线观看91 | 91精品亚洲欧美一区二区综合 | 国产在线秘麻豆精品观看 | 精品福利一区二区在线 | av无码不卡一区二区三区 | 国产a级毛片免费视频一区二区 | 国产激情一区二区三区在线 | 国产精品无码久久久久一区二区 | 国产成人户外露出视频在线观看 | 变态调教一区二区三区男同 | 国产一区欧美日韩3d | 高潮又爽又黄又无遮挡免费软件 | 国产激情无码视频在 | 国产三级电影hd在线观看 | 国产白丝美腿娇喘高潮的视频 | 91麻豆精品国产91久久久久久 | 国产精品无码专区免费不卡 | 国产剧情av网址网站 | 国产成人综合亚洲专区 | 国产在线精品一区二区夜色 | 91午夜精品亚洲一区二区三区 | 国产成人无码精品a级毛片抽搐 | 国产福利无码一区二区在线不 | 大尺度毛片免费看 | 国产肥熟女视频一区二区三区 | 精品国产仑片一区二区三区 | 国产aⅴ精品 | 国产a级国片免费播放 | 国产高清美女一级a毛片www | 国产精品成人69xxx免费视频 | 国产在线精品中文字幕 | 91精品国产免费久久 | 成人无码午夜在线观看 | 国产中文字幕在线播放 | 国产成人免费ā片在线观看 | 97色老99久久九九爱精品 | a级无码毛片真真久久真人版 | 国产亚洲欧洲综合53 | 国产精品成人网红女主播 | 岛国av无码精品一区二区三区 | 国产精品亚洲视频 | av网站免费在线观看精品 | 91久久久精品国产一区二区蜜臀 | 69式国产真人免费现视频 | 国产欧美日韩综合一区在线 | 国产高潮呻吟无码精品av | 成人一区二区三区四区五区六 | 丰满人妻被公侵犯完整版 | 97精品国产自产在线观看 | 高清欧美三级自拍 | 国产无码不卡黑人在线观看 | 国产爆初菊在线观看免费视频 | 精品人妻系列 | 国产精品成人久久电影 | 护士一级毛片 | 超刺激丝袜脚交在线观看 | 国产精品免费高清在线观看 | 国产精品初高中精品免费观看 | av无码精品一区二区三区宅噜 | 高清在线一区二区 | 国产成人午夜福利在线观看 | 国产精品线在线精品国语 | 韩国午夜理论在线观看 | 精品亚洲aⅴ无码午夜在线 精品亚洲aⅴ无码午夜在线观看 | 国产精品无码亚洲精品蜜桃传媒 | 国产成人女人视频在线观看 | 911国产主播在线观看 | 国产高跟制服 | 国产福利资源在线 | 精品视频一区二区三三区 | 国产av无遮挡喷水白浆桃花 | 国产aⅴ无码精品一区二区三区 | 不卡无码在线免费 | 精品无码av一区二区三区 | 加勒比东京热无码中文字幕 | 岛国毛片一级一级特级毛片 | 97人人超碰国产精品最新老片 | 国产免费露脸视频在线 | 国产高清在线播放免费观看一区 | 国产精品入口麻豆高清 | 激情欧美一区二区三区中文字幕 | 国产亚洲欧美日韩在线观看不卡 | 国产午夜小视频曝在线 | 国产高清狼人香蕉在线 | 国产成人女人在线观看 | 国产精品高颜值 | 91麻豆成人精品国产免费网站 | 国产一区二区激情视频在线 | 精品国产黄页网站在线观看 | 成人av免费网址在线观看 | 国产高清精品福利私拍国产 | 国产成人无码精品久久久影院 | 国产三级高清视频在线观看 | 国产精品夜色一区二区三区 | 国产精品一区二区三区在线播放 | 99九九免费| 国产午夜精品久久久久婷婷 | 国产aⅴ无码久久丝袜美腿 国产aⅴ无码专区 | 99九九精品视频 | 精品爆乳一区二区三区无码av | 国产毛片一区 | 国产黄色大片免费观看 | 国产蜜桃午夜亚洲精品电影网 | 动漫精品一区二区三区视频 | 国产色噜噜视频在线 | 国产成年精品高清在线观看91 | 成年女人粗暴毛片免费观看 | 国产专区在线观看无码 | 国产超碰人人做人人爱ⅴa 国产超碰人人做人人爱电影 | 国产午夜久久久久久 | 国产女人乱人伦精品一区二区 | 国产一区二区三区夜色 |