老司机夜插-理伦理片-理伦片免费-理伦片免费观看-理伦片免费看-理伦日韩-理论福利片-理论片第一页-理论片电影-理论片理论

金喜正规买球

MVVM模式實現(xiàn)主從數(shù)據(jù)顯示

轉(zhuǎn)帖|其它|編輯:郝浩|2011-03-11 10:25:51.000|閱讀 827 次

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

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

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

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

  首先來看完成后的效果:

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

SilverlightMVVM

  當(dāng)用戶點擊其中某一個班級的時候,跳轉(zhuǎn)到一個班級的學(xué)生列表中去。詳細(xì)信息頁面底部還提供一個返回按鈕,可以返回到班級選擇的頁面:

SilverlightMVVM02

  整個項目完成了以后,結(jié)構(gòu)如下:

SilverlightMVVM03

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

  Models

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

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

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

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

  我們看到,實體類只有屬性,沒有方法。通常,我們需要從某個地方去獲取數(shù)據(jù)來填充或者說生成這些實體類的實例,我們把這一些獲取數(shù)據(jù)的方法做成服務(wù)接口。這些接口被統(tǒng)一存放在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();
     }
}

  類似的,學(xué)生類的服務(wù)接口如下:

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);
     }
}

 然后,我們需要具體的服務(wù)來完成這一些接口。這些服務(wù)應(yīng)該是通過訪問數(shù)據(jù)庫啊之類的數(shù)據(jù)存儲,來提供實體類實例數(shù)據(jù)。這里為了演示,只寫了兩個假的數(shù)據(jù)提供類,來提供一些示例數(shù)據(jù),它們分別實現(xiàn)了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是可以同時進(jìn)行的。因為這兩部分不會直接產(chǎn)生任何關(guān)系。我們需要做的,只是把界面“畫”出來。本例中,一共需要三個View:MainPage、ClassesView和StudentView。

  在這里MainPage類似于ASP.NET中的“MasterPage”的作用:我們用一個TextBlock來提供頁面的標(biāo)題,然后,用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,用來放標(biāo)題,例如“MVVM Navigation Demo”。Border的作用,前面已經(jīng)講過。

  ClassesView中直接放了一個StackPanel,然后堆上一個“Show Data”的Button和一個顯示數(shù)據(jù)的ListBox,就可以交差了。而StudentView則堆放了一個DataGrid和一個Button。

  ViewModel

  ViewModel是View和Model之間的紐帶。我們把View綁定到ViewModel的類上,而ViewModel類同時又包裝了Model的實體和服務(wù)。這樣,當(dāng)用戶對界面操作時,會引發(fā)ViewModel的變化。ViewModel調(diào)用Model提供的服務(wù),修改其包裝的實體或?qū)嶓w集。由于這些實體或者實體集同樣被綁定到了界面,因此,界面對用戶的操作作出反應(yīng)。

  那么,如何來創(chuàng)建ViewModel類?讓我們以MainPageViewModel類為例:

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

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

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
     }
}

二、綁定屬性,添加方法調(diào)用代碼

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

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

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

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的構(gòu)造函數(shù)里添加少許代碼:

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

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

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

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

三、調(diào)用Model,實現(xiàn)方法

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

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
     }
}

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

  這個頁面由于沒有涉及到具體后來數(shù)據(jù)的操作,因此,并沒有直接調(diào)用Model里的服務(wù)。我們再來看一下比較典型的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屬性即對外暴露的數(shù)據(jù)集。ShowData方法中,首先清空原來Data中的數(shù)據(jù);然后,創(chuàng)建了一個實現(xiàn)IClassService的服務(wù)對象。最后,把數(shù)據(jù)項一一更新到Data集合里去。我們再次看到,由于ViewModel和View是綁定在一起的,因此,我們在寫代碼的時候,不需要去考慮頁面的更新。

  意外

  本來,這個Demo到此已經(jīng)全部結(jié)束,運行一下,出現(xiàn)卻得到一個十分詭異的異常—&mdash;AG_E_RUNTIME_MANAGED_UNKNOWN_ERROR:

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

  修改后的MainPageViewModel類:

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

namespace SilverlightNotes.Navigate.ViewModels
{
     public class MainPageViewModel : INotifyPropertyChanged
     {
         #region Events
         ///  <summary>
         /// 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模式原生應(yīng)用于WPF,由于Silverlight可以看作是WPF的子集,這一模式同樣可以較好的應(yīng)用于Silverlight。但是由于Silverlight的不成熟,還存在一些BUG,導(dǎo)致模式中有一些部分不能夠正常應(yīng)用。但是,我們可以通過一些Work-around,一些靈活處理,在盡可能多的利用模式給我們帶來的便利的同時,完成程序的全部功能。


標(biāo)簽:

本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn

文章轉(zhuǎn)載自:網(wǎng)絡(luò)轉(zhuǎn)載

為你推薦

  • 推薦視頻
  • 推薦活動
  • 推薦產(chǎn)品
  • 推薦文章
  • 慧都慧問
掃碼咨詢


添加微信 立即咨詢

電話咨詢

客服熱線
023-68661681

TOP
日日噜噜夜夜狠狠 | 影音先锋电影资源av | 国产又色又爽无遮挡免费 | 97视屏| 少妇做爰免费视看片 | 国产精品麻豆人妻精品A片 国产精品乱码一区二区三 国产精品乱码人妻一区二区三区 | 国产毛A片久久久久无码 | 午夜视频在线观看免费观看在线观看 | 日本久久久久久久做爰片日本 | 国产aav| 小莹的性荡生活38章 | 五月色播影音先锋丁香 | 日本a在线播放 | 国内自拍99 | 单县伦理影院 | 黄乱色伦短篇小说h | 黄页视频免费看 | 中文字幕在线不卡视频 | 欧美一级成人 | 国产成人亚洲精品91专区手机 | 国产嫖妓一区二区三区无码 | 免费久久久久 | 日本成人一区 | 在线视频精品免费观看10 | 男女又黄又刺激B片免费网站 | 吃奶边摸叫床刺激A片视频 抽插内射高潮呻吟爆乳 | 99热7| 免费永久观看美女视频网站网址 | 狠狠做五月深深爱婷婷 | 吃奶边摸叫床刺激A片视频 抽插内射高潮呻吟爆乳 | 影音先锋2017av天堂 | 91久久国产口精品久久久久 | 亚洲精品国产成人无码区A片 | 亚洲婷婷天堂在线综合 | 丁香天堂网 | 大家操成人网 | 日本免费一区高清观看 | 色中色.com | 国产欧洲一卡2卡3卡4卡 | 色v在线| 国产目拍亚洲精品一区 | 播播成人 | 卯月麻衣种子 | 色欲久久精品无码一区二区三区 | 国产精品高清视亚洲一区二区 | 久久综合九色综合狠狠97 | 美女视频黄a视频全免费网站色窝 | 亚洲色综合成人 | 毛片在线观看地址 | 99视频国产精品免费观看app | 真实国产乱子伦高清 | 欧美x性| 国产大片在线播放 | 老司机无码精品A | 亚洲精品一区二区三区婷婷月色 | 一边摸一边叫床一边爽 | 无码人妻国产一区二区三区 | 久久国产精品久久精 | 人妻熟女斩五十路0930 | 中文字幕无限乱码不卡2021 | 欧美女同在线观看 | caotu免费视频| 青草影院内射中出高潮 | 伊人综合在线 影院 | 在线看片中文字幕 | 国产真实夫妇4P交换A片 | 免费的中国黄网站大全 | 中文字幕日产乱码国内自 | 真实一级一级一片免费视频 | 色涩网站在线观看 | 欧美日韩视频二区三区 | 亚洲精品影院久久久久久 | 久久99精品久久久久久野外 | 四虎影永久地址在线 | 4480yy午夜私人影院 | 国产中文精品无码欧美综合小说 | 久热爱免费精品视频在线播放 | 欧美电影在线观看 | 蜜芽地址永不失联2022 | 成年女人色毛片免费看 | 久热99| 成人理论片 | 依人在线免费视频 | 亚洲精品乱码久久久久久日本麻豆 | 吉泽明步超m自缚痴女 | 干b在线 | 男JI大巴进入女人的视频 | 色情的人妻味道BD完整版 | 69毛片| 精品国产一区二区三区四区勃大卷 | 亚洲国产成人综合精品 | 把女人弄爽的特黄A大片 | 陪读妇乱子伦 | 久久9999国产精品免费 | 国产SUV精品一区二区 | 色欲AV蜜臀AV在线观看麻豆 | 免费在线看黄的网站 | 成人在线你懂的 | 免费做A爰片久久毛片A片下载 | 45分钟级毛片免费视频 | 忘忧草.WYC.IA| 黑人性致 | 蜜臀AV色欲A片精品一区 | xxxx日本免费高清视频 | 久久久久久亚洲精品不卡 | 亚洲精品欧美日韩 | 黄色影视| 久久综合综合久久狠狠狠97色 | 99热这里只有精品国产99热门精品 | 中文字幕无码日本欧美大片 | 五月天婷婷在线观看高清 | 日本少妇裸体做爰高潮片 | 波多野结衣日韩 | 亚洲区激情区图片小说区 | 日韩亚洲全网最全无码 | 国产精品日本无码久久一老A | 打开美人妻的两腿 | wwwav视频| 髙清国产性猛交XXXAND | 国产亚洲精品久久久久苍井松 | 第四色网站主页 | 日韩AV免费一二三区视频 | 成AV人片一区二区三区久久 | 日本成人免费在线视频 | 亚洲精品无码高潮喷水A片软 | 国产SUV精品一区二区6 | 日本无码一区二区三区不卡 | www.黄色| 国产激情艳情在线看视频 | xxxx亚洲| JIZZJIZZ日本护士水多多小说 | 波多野结衣hd在线播放 | 全免费a级毛片免费看视频免 | 久久久久国产精品美女毛片 | 精品人妻无码一区二区三区50 | 亚洲国产精品日本无码小说 | 日韩精品中文字幕视频一区 | 蝌蚪窝99视频| 韩国三级日本三级在线观看 | 三级黄色片在线观看 | 理在线| 激情五月婷婷综合 | 97无码欧美熟妇人妻蜜桃天美 | 九热视频 | 欧美激情综合色综合啪啪五月 | 伊人日日夜夜 | 欧美激情视频一区二区免费 | 美女扒开腿让男人桶视频在线观看 | 99久久精品无码一区二区毛片 | 精品麻豆一区二区三区乱码 | 99re 视频| 国模沟沟一区二区三区 | 中文字幕AV在线一二三区 | 国产三级一区 | 成午夜精品一区二区三区精品 | 免费观看情趣v视频网站 | 欧美日韩网 | 午夜福利国产在线观看1 | 久久综合中文字幕 | 国产精品久久久久久 | 久久国产高清波多野结衣 | 国产精品乱码久久久久软件 | 亚洲欧美日韩另类精品一区二区三区 | 色网站在线免费观看 | 最新中文字幕在线 | 日本a级精品一区二区三区 日本a级黄 | 国产亚AV手机在线观看 | 男女ppp视频 | 免费国产凹凸在线视频 | 国产精品黄网站免费进入 | 60岁老年熟妇在线无码 | 亚洲瑟瑟网 | 被几个人强的好爽小说 | 成人中文在线 | 精品一区二区三区免费毛片爱 | 久久天天躁日日躁狠狠躁 | 大香线蕉伊人久久爱 | 国产一级αv片免费观看 | 激情综| 国产日本精品视频在线观看 | 免费视频在线观看网站 | 午夜视频h | 麻豆优品 | 欧美精品无码一二三区网站 | 国产在线观看精品一区二区三区91 | 热久久伊人| 国产又黄又猛又粗又爽的A片 | 久久日本无码一区二区三区 | 国产成+人+综合+亚洲专 | 女人被弄到高潮叫床免 | 天天综合在线视频 | 国产精品午夜免费观看网站 | 欧美 国产 亚洲视频 | 国产精品人妻久久久久A片-百度 | 中文字幕一区二区三区在线播放 | 国产成人影院在线观看 | 亚洲AV无码午夜国产精品色软件 | 国精产品一区一区三区MBA下载 | 国产欧美日韩灭亚洲精品 | 国产精品成人影院 | 国产成人精品免费久久久久 | AV国産精品毛片一区二区三区 | 乱精品一区字幕二区 | 男人的天堂2024无码 | 欧美亚洲福利 | 男JI大巴进入女人的视频 | 亚洲乱色熟女一区二区三区蜜臀 | 亚洲va欧美va | 亚洲日韩一区精品射精 | 女同网站在线观看免费 | 欧美日韩午夜精品不卡综合 | 久久精品免费观看视频 | 国产婷婷色综合成人精品 | 小辣椒导航精品福利视频 | 日韩欧美精品在线 | 麻豆免费版| 麻豆精品2021最新 | 日本亚洲天堂网 | 无码日本精品一区二区片 | 亚洲 日本 欧美 中文幕 | 秋霞精品 | 亚洲最新永久在线观看 | 青青草在免费线观曰本 | 久久亚洲精品国产露脸 | 国产免费播放一区二区 | 色播影院性播影院私人影院 | 国产中文字幕在线播放 | 天天影视色香欲综合网 | 亚洲1卡2卡三卡3卡4卡网站 | 毛茸茸的浓密在线视频 | 在免费JIZZJIZZ在线播放视频 | 十分钟视频影院免费 | 中文自拍 | 日本欧美一区二区三区免费不卡 | 日本韩国亚洲欧美在线 | 西西人体一级裸片 | 免费一级夫妻a | 国产一国产a一级毛片 | 人人看人人艹 | 国产第一页浮力影院草草影视 | 中文字幕人妻少妇引诱隔壁 | 免费无毒a网站在线观看 | 久久久无码精品成人A片小说 | 91精品久久久久久久久久 | 最近韩国日本免费高清观看 | 好吊色青青青国产在线播放 | 国产成人精品日本亚洲网址 | www.黄色毛片 | 国产日产综合 | 久久99国产一区二区三区 | 亚洲成人一区二区 | 日韩特级 | 日韩精品AV一区二区三区 | 欧美 日韩 综合 无码 专区 | 免免费国产AAAAA片 | 日本一卡二卡三卡四卡无卡免 | 久久成人小视频 | 国产精品第一国产综合精品99 | 曰批全过程免费视频在线观看草莓 | 最新黄yyid | 亚洲永久免费视频 | 中文区中文字幕免费看 | 精品人妻无码一区二区三区手机板 | 欧洲欧美人成视频在线 | 国产一区2区| 好男人午夜影院 | 国产毛片不卡 | 肉乳乱无码A片观看免费 | 三个馊子伦着玩小说冫 | 超级H纯肉 | 与女乱小说目录伦下载 | 欧美成人猛片AAAAAAA | 女人下边被添全过程A片 | 无人视频免费观看免费直播下载 | 免费无码又爽又刺激高潮视频日本 | 色妺妺视频网 | 纯肉高H种马艳遇风流多 | 成人在线精品视频 | 国产精品福利短视在线播放频 | 亚洲免费视频费观看在线 | 中文字幕日产乱码国内自 | 美女裸体黄网站18禁免费看影站 | 夜夜操国产 | 无码人妻深夜拍拍AAA片 | 亚洲美女视频高清在线看 | 没有废话全色肉的黄文 | 亚洲AV久久无码精品夜夜挺 | 国产精品一区二区精品视频导航 | 国产亚洲精品AV麻豆狂野 | 国产一区二区三区免费大片天美 | 曰本xxⅹ孕妇性xxx | 国产精品久久丫毛片A片软件 | 国产精品片211在线观看 | 日本黄页在线观看 | 最新91网址 | 男人狂躁女人A片免费网站 男人猛躁进女人的毛片A片 | 黄色一级片在线免费观看 | 天天综合网天天综合色不卡 | 日韩色情无码一本二本三本 | 亚洲一品AV片观看五月色婷婷 | 国内精品视频九九九九 | 国产一区2区| 欧美日本亚洲国产一区二区 | japanese色系free日本 | 日本啊啊啊视频 | 亚洲欧美日韩人成 | jizz在线观看国产精品 | 国产入口在线观看 | 一级毛片女学护士 | 在线高清国语成人网站 | 久久精品国产99国产 | 一级爱爱 | 永久免费看MV网站入口亚洲 | 2018一级毛片免费观看 | 国产精品对白刺激久久久 | 免费人成A片在线观看免费 免费视频精品38 | 狼狼躁日日躁夜夜躁A片 | 亚洲AV无码一区二区三区牛牛 | 久久精品国产久精国产果冻传媒 | 2024一本久道久久综合狂躁 | 五月色丁香综合成人网 | 九九精品视频在线观看九九 | 拍拍拍无遮挡高清视频在线网站 | 后入式啪gif动态图 葫芦娃视频成人APP | 五月综合激情久久婷婷 | 免费看人与动人物XXXX | 国产在线观看不卡免费高清 | 毛片无码一区二区三区A片视频 | 丝袜天堂| 亚洲视频五区 | 俺也去在线观看视频 | 日本精品久久久久中文字幕 | 88永久华人| 国产极品JK白丝喷白浆在线观看 | 亚洲一卡2卡三卡4卡 127 | 你懂的网址免费国产 | 色窝窝免费播放视频在线 | 扬名立万在线播放 | 求个网站你懂的无毒 | 亚洲色婷婷久久精品AV蜜桃久久 | 欧美午夜精品 | 成人亚洲A片V二区三区久久 | avtt天堂网影音先锋 | 色偷偷网 | 综合网在线 | 日韩欧美中文字幕送别 | 久久99国产精品久久99果冻传媒 | 亚洲午夜在线播放 | 日本一品道无码免费专区在线观看 | 在线观看色网 | 色情成人韩国在线视频 | 国产69囗曝吞精在线视频 | 久久综合伊人77777麻豆 | 色姑娘综合网久久 | 丁香五月久久婷婷久久 | 日韩精品视频美在线精品视频 | 国产精品xxxav免费视频 | 亚洲日日做天天做日日谢 | 国产精品线路一线路二 | 美女被c网站 | 久久人妻精品国产 | 久久久久久99 | 色婷婷国产精品视频一区二区三区 | 亚洲情A成黄在线观看动漫软件 | 午夜免费国产体验区免费的 | 国产精品久久久久久久久99热 | 好爽又高潮了毛片免费下载 | 牲高潮99爽久久久久777 | 欧美网站黄 | 雾岛奈津美ed2k| 蝌蚪蚪窝视频在线视频手机 | 中文www新版资源在线 | 婷婷综合在线观看丁香 | 国产精品美女WWW爽爽爽视频 | 美女视频永久黄网站免费观看 | 中文字幕乱码高清完整版 | 不卡的毛片| 亚洲久久少妇中文字幕 | 国产精品美女久久久久AV超清 | 久久97久久97精品免视看秋霞 | 免费在线观看黄色网址 | 欧美日韩91 | 国产成人综合精品 | 99在线免费视频 | 人人看人人干 | 四虎影片国产精品8848 | 色一欲一性一乱一区二区三区 | 调戏床上美女 | 天天躁夜夜躁狠狠躁2023 | 国产一级高清视频 | 国产ts人妖系列视频网站 | 中国一级毛片特级毛片 | 免费黄网站在线观看 | 撕开胸罩胸奶头玩大胸动态图片 | 国产做A爱片久久毛片A片高清 | 高清乱码一区二区三区 | 无码爽大片日本无码AAA特黄 | 乱肉合集乱500篇小说奶水 | 国产一卡2卡3卡4卡有限公司 | 91精品一区二区三区久久久久 | 玖玖在线精品 | 亚洲精品一区久久久久一品AV | 2022精品国产 | 五月婷婷丁香 | 免费在线观看黄色小视频 | 69欧美xxxxx色护士视频 | 97国产在线视频 | 亚洲 日本 欧美 中文字幕 | 欧美色婷婷 | 国产一级黄色网 | 一级做a爱过程免费视频app | 国产精品精华液网站 | 日韩少妇内射免费播放 | 国产乱码一区二区三区 | 日本高清免费一本视频在线观看 | 免费观看欧美成人1314w色 | 久久精品成人无码A片小说 久久精品国产色欲A片小说 | 99久久久无码国产精品AAA | 高清不卡毛片免费观看 | 99热一区 | 国产97碰免费视频 | 一级特黄性色生活片一区二区 | 黄网免费在线观看 | 天堂 地址 在线 | 日本免费黄网站 | 国产成a人亚洲精v品久久网 | 国产精品免费久久久久影院 | 野花成人福利在线 | 亚洲国产在线精品国 | 好爽好紧好大的免费视频国产 | 亚洲AV國產国产久青草 | 最近中文字幕完整免费视频 | 亚洲二区在线视频 | 国产一区不卡 | 精品久久久久久无码中文字幕 | 一级做a爱过程免费视频超级 | 动态图污动态 | 粉嫩久久AV色欲AV久久 | 综合久久久久综合体桃花网 | 韩国伦理电影在钱看线 | 欧美xxxx狂喷水喷水 | 日本理论片午午伦夜理片2024 | 亚洲午夜精品一区二区 | 中国一级全黄的免费观看 | 久国产视频 | 日韩精品网 | 明星xxxx hd videos| 国产电影一区二区三区爱妃记 | 美国一级毛片片aa久久综合 | 狠狠色丁香久久婷婷综合图片 | 欧美成人精品免费播放 | 糖心vlog国产剧免费观看 | 免费无码AV色情在线 | 国产成人不卡亚洲精品91 | 国内精品偷拍在线观看 | 亚洲精品做爰无码片麻豆 | 欧美乱妇无码毛片 | 久久国产精品久久 | 亚洲欧美偷拍综合图区 | 在线看一区二区 | 亚洲v日本v欧美v综合v | a亚洲欧美中文日韩在线v日本 | 一级毛片aa| 精品精拍国产日韩26u | 午夜精品久久久久久久第一页 | 夜夜操操操 | 手机在线中文字幕乱码 | 欧美一区二区视频在线观看 | 欧美97 | 狠狠色丁香婷婷久久综合五月 | ijzz日本 | 日本三线免费视频观看 | 国产激情久久久久影院小草 | 日本三级电影在线看 | 杨紫好深啊再用力一点 | 天天在线天天综合网色 | 最近2019免费中文字幕视频三 | 国模欢欢高清炮交图片 | 99久久精品免费视频 | 最后的朋友结局 | 蜜桃传媒一区二区亚洲AV | 欲色影视天天一区二区三区色香欲 | 性a爱片免费视频性 | 亚洲精品无码一区专区国产 | 美女内射 | 国产精品流白浆在线观看 | 日本天天操 | 男男开荤粗肉NP快穿 | 最近免费字幕中文大全在线观看 | 中文字幕在线视频一区 | 四房色播开心网 | 高辣H小黄文 | 中文字幕一级毛片视频 | 日本69色视频在线观看 | 色555| 亚洲精品国产A久久久久久 亚洲精品第一区二区APP | 色综合激情 | 国产-第1页-草草影院 | 欧美另类视频在线 | 香蕉久久av一区二区三区 | 国产成人精品福利网站app | 男人狂躁女人A片免费网站 男人猛躁进女人的毛片A片 | 精品一区二区三区的国产在线观看 | 韩国高清乱理伦片在线观看 | 欧美 在线 另类 春色 小说 | 天天操天天干天天透 | 午夜成年奭片免费观看 | 午夜成人影视神马 | 国产成人综合精品 | 亚洲综合AV久久国产精品凡士林 | A片扒开双腿猛进入免费观 A片好大好紧好爽视频免费 | 全免费a级毛片免费看视频免 | 色丁香在线视频 | 国产免费一区二区在线A片 国产目拍亚洲精品一区 | 国产精品久久久久久99人妻绯闻 | 不卡一卡二卡三亚洲 | 欧美大码毛片在线播放 | 国产亚洲精品久久久性色情软件 | 三级不卡 | 伦理片无码电影在线看 | 91久久香蕉国产线看观看软件 | 韩国片黄18以上在线观看 | 天天综合天天做天天综合 | 国产乱码在线观看 | 麻豆视传媒免费版 | 嫩草国产露脸精品国产软件 | 久久草这在线观看免费 | mcc聚色导航| 六月丁香六月婷婷 | 久久综合老色鬼网站 | 精品久久久久久久一区二区伦理 | 99国精产品一区二区三区A片 | 亚洲 欧美 中文 在线 视频 | 欧美最新的精品videoss | 性欧美丰满xxxx性久久久 | 国产a国产片 | 日本午夜成年在线网站 | 国产入口在线观看 | 天天干天 | 最近韩国日本免费观看MV免费版 | 偷拍自怕亚洲在线第7页 | 性一交一乱一交A片久久四色 | 窝窝午夜看片七次郎青草视频 | 韩国伦理片手机在线观看 | 国产精品久久毛片A片软件爽爽 | 女人18毛片A片久久18软件 | 夜夜摸天天操 | 91在线视频免费 | 久久久久久久99精品免费 | 99re九精品视频在线视频 | 久久精品女人天堂 | 777精品久无码人妻蜜桃 | 水中色av综合 | 欧美日韩欧美 | 日本在线电影一区二区三区 | 97精品视频在线 | 最好看最新中文视频在线观看 | 日本理论片午午伦夜理片2024 | 99这里只有精品 | 一二三四日本无吗影视 | 国产三级做爰在线播放 | 自拍视频在线观看亚洲福利 | 激情啪啪精品一区二区 | 久久精品视 | 波多野结衣在线网站 | 日韩a级一片 | 天天干天天做 | 妞干网免费在线 | 免费看一区二区三区 | 国产精品 同事 在线 视频 | 国色天香精品一卡2卡3卡4公司 | 国产xxxx做受性欧美88 | 天天射天天操天天干 | 日韩视频国产 | 草草影院在线观看视频 | 看片毛网站 | 91传媒制片厂果冻有限公司 | 日本三级黄网站 | 毛片免费观看 | 99久久久无码国产精品免费人妻 | 91在线一区二区 | 久久精品老熟女人妻毛片 | 3D肉蒲团之极乐宝鉴8K影院 | 欧美日本日韩aⅴ在线视频 欧美日本日韩 | 久久AV无码乱码A片无码波多 | 日本高清免费视频毛片 | 亚洲免费视频日本一区二区 | 六月成人| 污片网站在线观看 | 欧美人成在线观看ccc36 | 四虎影视完整版免费观看 | 青青草一区 | 中文字幕无线观看在 | 无套内射无矿码免费看黄 | 操屁股| 自拍一区 综合图区 | 三级理论中文字幕在线播放 | 五月色综合网天天综合网 | 又硬又粗进去好爽A片66 | 日韩一级精品久久久久 | 欧美三级视频 | 国产黄色福利 | 日本高清成人 | 成人性视频免费网站在线 | 免费欧三a大片 | 粉嫩被粗大进进出出视频 | 国产成人精品18 | 人人97 | 91国内外精品自在线播放 | 亚洲欧洲日产国码久在线 | 国产免费一级视频 | 成熟YIN荡美妞A片视频麻豆 | 韩国精品一区 | 国产黄在线免费观看 | 免费无码AV色情在线 | 粗大的内捧猛烈进出A片 | 日本免费一区二区久久人人澡 | 国产精品久久久久久亚洲影视 | 欧美成人精品第一区二区三区 | 欧美日韩精品高清一区二区 | 中文无码不卡的岛国片 | 18成网站www在线观看 | 四虎影视国产在线观看精品 | 草影视 | 日本 韩国 亚洲 欧美 在线 | 日本午夜精品一区二区三区电影 | 无码激情全黄做爰片 | 特级淫片国产免费高清视频 | 欧美一级精品高清在线观看 | 欧美躁天天躁无码中文字 | 国产精品99久久久久久AV小说 | 欧美日韩中文字幕在线手机版本 | 国产日韩欧美一区二区三区综合 | 被绑在坐桩机上抹春药 | 中文字幕在线观看你懂的 | www三级免费| 成人做爰高潮A片免费视频 成人做爰片免费网站 | 国产精品第一综合首页 | 免费无码AV色情在线 | 免费看日b视频 | www.狠狠操 | 天天干夜夜曰 | 影音先锋影av色资源网 | 日本熟妇乱妇熟色A片在线观看 | 久久九| 办公室漂亮人妇在线观看 | 波多野结衣中文字幕在线播放 | 国产专区中文字幕 | 欧美日韩精品一区二区免费看 | 在线国产毛片 | 丰满五十路熟女正在播放 | 成年必看视频在线观看 | 星野亚希 qvod | 国产午夜精品一区二区不卡 | 亚洲 欧美 制服 另类 无码 | 国产精品露脸脏话对白 | 久久久日韩精品一区二区 | 天天爱天天做天天干 | 欧美高清一区二区三 | 欧美91精品久久久久网免费 | 国产网站免费看 | 拉风色影院| 97久久人人| 丁香五月香婷婷五月 | 国产在线播放一区二区 | 最近免费观看高清日本大全 | 肉乳床欢无码A片动漫无尽 肉乳乱无码A片观看免费 | 国语熟妇乱人乱A片久久 | 91av视频在线观看 | www成人在线观看 | 真实乱L仑口述全过程 | 91福利视频免费观看 | 亚洲国模私拍人体gogo | 国产精品人妻免费精品 | 狼人青草久久网尹人 | 国产又黄又刺激的免费A片小说 | 中文字幕人妻熟女人妻洋洋 | 日本丰满大乳人妻无码水卜樱 | 视频色www永久免费 视频黄页在线观看 | 97SE亚洲精品一区二区 | 激情偷乱人成视频在线观看 | 国内久经典AAAAA片 | 日韩国产精品欧美一区二区 | 五月婷婷激情综合 | 被拖进小树林C了好爽H出租车 | 99精品视频免费在线观看 | 国内精品一卡2卡3卡四卡 | 8050网午夜一级毛片免费不卡 | 中文字幕在线看片成人 | 欧美精品videosex极品 | 亚洲图片欧美日韩 | 日本大片高清免费视频 | 久久精品美女 | 毛片观看网站 | 成人18在线视频播放 | 伊人一区二区三区 | 99久久国产免费中文无字幕 | 婷婷丁香五月激情综合在线 | 四川BBB搡BBB爽爽视频 | 日本久久99 | 亚洲一卡2卡3卡4卡5卡新国色天香 | 久久AV亚洲精品一区无码 | 久久免费看少妇高潮A片JA | 2024国产精品视频一区 | 欧美日韩在线精品一区二区三区 | 相爷与女H嗯啊 | 天天操夜夜拍 | 国产中的精品AV一区二区 | 91在线一区二区三区 | 小小视频资源免费观看高清 | 97国产精品 | 国产午夜精品不卡视频 | 黄色在线网站视频 | 黄网站色视频免费看无下截 | 午夜福利看757 | 一二三四日本高清无吗 | 精品无码一区二区三区不卡 | 国产精品人妻出轨 | 女人把腿张开叫男人桶免费视频 | 国产AV无码熟妇人妻麻豆 | 久久精品国产亚洲麻豆 | 欧亚乱色熟一区二区三四区 | 欧美xxxx做受性欧美88 | 日本特黄特色视频 | 在线观看国产黄色 | 亚州久久久久区1区2少妇 | 亚洲精品一卡2卡三卡4卡5卡 | 大陆老熟女嗷嗷叫AV在线 | 成年在线观看网站免费 | 日b在线 | 亚洲免费黄网 | 欧美亚洲午夜 | 狠狠干天天 | 国禁国产you女视频网站 | 亚洲一区二区三区国产精华液 | 日韩精品在线视频观看 | 成人乱人乱一区二区三区 | 国产精品卡一卡2卡三卡网站 | 欧美一区二区在线观看免费网站 | 日本免费www | 国产第一色| 日本免费一区二区三区最新vr | 午夜国产理论 | 国产vs久久 | 国产成人激情 | 国产国产人精品视频69 | 91制片厂果冻传媒大象传媒 | 99热免费精品 | 日韩一区二区三区在线播放 | 日产精品一区到六区免费 | 国产 精品 自在 线 囯精品人妻无码一区二区三区99 | 再次出发 电影 | 一区二区三区四区在线免费观看 | 欧美在线看视频 | 在线看不卡日本AV | 一个人看的视频WWW高清免费 | 无码一区二区在线欧洲 | 69福利| 最近最新中文字幕MV在线1 | 日韩在线毛片 | 日本a在线观看 | 微拍福利88| 死尸videosdeexotv 斯大林格勒战役免费高清观看 | 国产成人深夜福利在线观看 | 日韩精品第二页 | 日本高清在线中文字幕网 | 帅哥摸舔美女全身视频 | 色婷婷综合欧美成人 | 天天操夜夜操狠狠操 | 高清网站 | 色妺妺在线视频 | 99久久综合精品国产 | 色翁荡息又大又硬又粗肖艳 | 日本免费在线视频 | 精品无码久久久久久久动漫 | 伊人蕉久75影院在线播放 | 亚洲精品无码一二区A片 | 无套内谢少妇毛片A片免费视频 | 久久国产精品系列 | 国产伦精品一区二区三区妓女下载 | 男女后式激烈GIF动态图 | 99爱精品| 亚洲精品国产一区二区贰佰信息网 | 久久99精品一区二区三区 | 亚洲国产成人精品女人久久久 | 婷婷综合久久狠狠色成人网 | 国产高清免费视频免费观看 | 午夜精品成人一区二区视频 | 色婷婷精品大全在线视频 | 桃子视频免费观看完整版HD | 欧美肥婆姓交大片 | 缴情五月天 | 自拍区偷拍亚图片小说 | 噜噜噜在线观看播放视频 | 免费一级淫片aa | 亚洲欧美在线观看 | 日韩欧美 亚洲视频 | 久久这里只有精品1 | 中国一级毛片特级毛片 |