国产凹凸在线-国产拗女一区二区三区-国产白白视-国产白领-国产白拍-国产白丝jk被疯狂输-国产白丝喷-国产白丝在线

金喜正规买球

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是可以同時進行的。因為這兩部分不會直接產(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由綁定這種較松的耦合變成代碼的強耦合……后來考慮了一下,借鑒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
看日韩精品视频在线观看 | 欧美黑人巨大性 | 最新电影电视剧 | 亚洲精品1卡2卡三卡23卡 | 想要大鸡| 日韩最新视频一区二区三 | 日韩欧美精品一区二区二区不卡 | 国产盗摄精品一区二区三区 | 91极品蜜桃 | 高清午夜福利电影在线 | 欧美日韩一区二区三区在线 | 1905.com| 日本一区二区三区精品国产 | 免费又黄又爽一 | 日本国产欧美日韩三区四区 | 日本高清在线中字视频 | 强被迫伦姧在线观 | 一级a爱片免费观看高清完整 | 91色窝窝国产蝌蚪在线观看 | 级日本乱 | 欧美日韩视频在线一区二区 | 欧美精品人爱a欧美精品 | 91香蕉国产亚 | 精品一区二区三区四区 | 日本成年人视频网站 | 国产又粗又猛又爽又黄 | 欧美成aⅴ人高清免费观看 亚洲成a人片在线v 国产日韩传媒一区二区三区四区 | 国产精选污视频在线观看 | 国产久爱青草视频在线观看 | 亚洲国产欧美日韩一区 | 香港三级澳门三级欧洲三级 | 伦理中文字幕一区二区三区 | 男女车车的车车网站w98免费 | 神马电影| 在线涩涩免费观看国产精品 | 亚洲一区日本一区 | 激情五月天深爱网 | 九月丁香婷婷激情四射视频一区 | 特黄特色的大片观看免费视 | 水蜜桃国产在线观看免费视频 | 亚洲精品字幕中文在线播放 | 99热在线获取最新地址 | 日韩高清在线观看一区二区三区 | 成全在线观看免费观看高清 | 亚洲视频在线观看 | 无人视频在线观看免费播放影院 | 欧美精品一区免 | 日本不卡高清视频v | 欧美综合亚洲图片综合区 | 欧美一区二区手机在线观看视频 | 免费网站看v片在线爱的影院 | 国产美女极品免费视频 | 法国性xxxx精品hd | 国产特黄a三级三级三级 | 337p亚洲日韩国产欧美二区 | 国产精品精品综合在线网 | 日本特级一区二区三区大片 | 窝窝午夜看片七次郎青草视频 | 最新日本一道免费一 | 99精品国产兔费 | 日本综合欧美一区二区三区 | 成人午夜影院网站 | 亚洲高清国产拍 | 国产偷伦视频高清完整版 | 欧美亚洲国产日韩在线播放 | 欧美激情一区二区三区在线 | 免费手机在线看片 | 欧美三级在线播放 | 亚洲欧美中文 | 成人看的羞 | 1024国产在线在线视频 | 亚州在线中文字幕经典a | 国产在线精品一区二区三区直播 | 精品国产免费一区二区三区 | 欧美三级中文字幕hd | 日韩精品在线 | 91秒拍国产福利 | 韩国三级在线观看 | 区三区不卡 | 最近中文字幕免费高清mv视频6 | 国产精品宾馆在线精品酒店 | 好吊妞国产欧美日韩观看在线 | 宝贝腿开大点我添添公漫画 | 国产操穴 | 欧美91成人亚洲播 | 国产一级爽快片在线观看 | 午夜亚洲福利在线老司机 | 午夜欧美性视频在线播放 | 国产色爽女免费视频 | 美日韩一区二区 | 欧美在线一区二区 | 区二区三区观看 | 色综合激情丁香七月色综合 | 国产a级三级三级三级视频 日本高清在线播放 | 97se亚洲国产综合自在线 | 国产精品理| 亚洲春黄在线观看 | 96在线视频精品 | 国语自产偷拍精 | 精品一区二区不卡 | 亚洲国产欧美日韩 | 国产真实露脸乱子伦原著 | 男人靠女人免费视频网站 | 国产一区二区视频在线 | 日韩免费 | 国产精品精品国 | 国产又爽又黄的激情精品视频 | 中文字幕在线第46页 | 7799免费视频天天看 | 精品国精品国产自在久国产应用 | 九九精品99久 | 国产精品三级三级 | 欧美在线综合视频 | 最新热播电影 | 第四色伊人 | 国产人妖自拍 | 免费高清电影观看 | 亚洲专区欧美三级 | 日本免费 | 91天堂а8天堂资源在线官网 | 欧美极度残忍变 | 国产一级变态a视频 | 国产亚洲一区二在 | 国产欧美一区二区精品性色 | 日韩在线观看福利片 | 国产高清在线精品一区app | 国产人在线成 | 国产精品香蕉在线的人尹人 | 好看的电视剧全集免费在线观看 | 免费观看性欧美一级 | 成人午夜电影网十八岁勿入 | 我被两个老外抱着高爽翻了 | 日韩一区二区三区在线精 | 国产经典在线观看一区 | 香港三级日本三级人妇三99 | 国产亚洲精品线观看不卡 | 国产中文字幕在 | 最新好剧电影在线观影平台 | 国产高清美女主播在线观看 | 精品一区二区三区四区在线播放 | 国产精品性 | 亚洲韩国欧美一区二区三区 | 精品日韩亚洲欧美高清a | 国产内地| 国产乱码精品一区二区三区小说 | 日韩一区二区三区在线观 | 国产又色 | 国产一区二区三区高清视频 | 另类专区欧| 亚洲欧美日韩综合在线一区二 | 国产精品专区第一页在线观看 | 国产天堂很黄很暴力的视频 | 国产vr精品专区 | 国产午夜男女爽爽爽爽爽视频 | 免费影视资源 | 国产视频中文字幕手机版 | 日韩中文字幕不卡 | 日本六九一区二区视频 | 日本国产欧美 | 国产妇女aaaaaa免费视频 | 五月丁香婷婷综合影院 | 国产欧美日韩在线一区二区不卡 | 日韩国产中文欧美 | 欧美性xxxxx ⅹxx欧美 | 亚洲人成人一区二区三区 | 在线视频一区二区 | 亚洲中文字幕在线一区 | 日韩视频在线观看一区二区 | 欧美一级性爱簧片免费播放 | 中国老熟女重囗味hdxx | 精品国精 | 91久热 | 亚洲欧美另类在线视频 | 欧洲亚洲偷自拍第一页 | 欧美最新免费一区 | 国内免费视频一区二区三区 | 91精品电 | 一码二码三码 | 亚洲欧美国产日韩精品 | 国产亚洲制服免视频 | 亚洲日韩看片 | 欧美日韩一区四区 | 国产综合色产在线精品 | 懂色一区二区三区在线播放 | 国产一区二区欧美专区 | 婷婷国产精品中文字幕 | 日本好好热| 91网红精品 | 在线看免费看国产精品视频 | 97国产婷婷综合 | 国产精品亚洲αv | 成人奭片免费观看 | 国产如狼似虎富婆找强壮黑人 | 日韩在线免费视频 | 乱无伦码中文视频在线 | yes4444视频在线观看 | 亚洲高清aⅴ日本欧美视频 亚洲色一色噜一噜噜噜人与 | 国产第1页| 国语自产偷拍精品视 | 国产欧美现场va另类 | 亚洲美女一区二区三区 | 成人免费视频一区二区 | 国产乱子伦不卡视频 | 欧美三级中文字幕hd | 亚洲成年看片在线观看男男 | 中文字幕免费播放 | 国产精品综合日韩精品第一页 | 国产一区二区三区精品观看啪 | 青春草在线视频免费观看 | 国产香蕉尹人视频在 | 乱码在线卡一卡二卡新区豆瓣 | 亚洲欧美精品福利一区二区 | 日本免费国产 | 欧美日韩国产一区二区三区在 | 国产免费乱理伦片在线观看 | 亚洲精品国产高清在线观看 | 男人猛躁进女人成人免 | 国产免费观看大片视频 | 天美传媒在线观看果 | 手机看片1024欧美日 | 区三区免费视频 | 天堂v亚洲国产ⅴ第一次 | 欧美日韩a∨ | 精品视频日韩一区二区三区 | 欧美日韩在线精品一区二区 | 日本亚洲色大成网站www男男 | 日韩精品一线二线三线优势 | 一区二区三区四区的在线视频 | 国内自拍亚洲精选在线观看 | 91国语精品自产拍在线观看 | 国产欧美日韩精品综合第一区 | 国产欧美日韩综合一区在线播放 | 传媒mv在线观看视频 | 91插插插网站 | 亚洲一区二区三区高清视频 | 国产暴力强伦轩1区二区小说 | 欧美日韩性生活视频 | 国语对白精品视频在 | 果冻传媒视频一二在线观看 | 欧美精品偷自拍另类在线观看 | 日本成人动漫私人影院 | 另类欧美区综合区图片区 | 亚洲人成在 | 亚洲特黄特色免费手机在线视 | 大肉大捧一进一出69xx | 三级网页 | 亚洲一区二区三区在线观看蜜桃 | 亚洲制服丝袜在线 | 国产电影免费一产二产 | 91蝌蚪在线 | 亚洲综合精品一区二区三区 | 国产精品日本一区二区在线播 | 日韩高清第一页 | 白人干b免费视频 | 欧洲乱码伦视频免费 | 欧美在线视 | 欧美性爱视频线上免费看 | 国产对白刺激真实精品91 | 国产一区在线看 | 亚洲午夜成人 | 亚洲狼人影院 | 国语自产偷拍精品视 | 国产精品边做奶水狂喷 | 久青草国产在线视频新免费 | 国产精品思思在线 | 国产欧美日韩在 | 亚洲人成网址在线观看 | 日本新ja | 亚洲成?v人片在线观看福利 | a网站在线观看 | 巨大精品欧美黑寡妇 | 91孕妇| 国产97色在线 | 亚洲一区二区高清 | 国产热久| 一区二区免费国 | 国产在线观看福利一区二区 | 亚洲h成年动漫在线观看不卡 | 欧美日韩国产另类激情一区 | 亚洲国产精品∨a在线看黑人 | 国产激情自拍亚洲精品国产精品精 | 国产日产成人免费视频在线观看 | 亚洲欧美性另类春色 | 日本亚洲中文字幕不卡 | 日韩在线视频一区二区 | 久热爱精品视频在线 | 欧美开嫩苞在线播放视频 | 中文字幕第1页精品一区 | aa级国产 | 在线观看视频在线播放9 | 最新国产精品自在自线发布 | 日韩午夜免费不卡视频 | 国产精品自在自线视频 | 精品人伦一区二区三区蜜 | 国产日本欧美一本在线观看 | 免费电影网站在线观看 | 日本名勝景點推薦 | 丰满多毛的陰户 | 秋霞特一级 | 欧美精品中文字幕亚洲 | 国产福利在线观看第二区 | 91短视频福利导航 | 日韩亚洲欧美综合一区 | 最新日本一道免费一区二区 | 99国产在线 | 亚洲日韩视频在线观看 | 欧美激情在线视频 | 宝宝真骚是不是想被c | 欧美在线观看网站 | 福利日韩精品中文字幕专区 | 国产日韩欧美亚欧在线中日韩 | 成全看免费观看 | 欧美国产日韩最新在线 | 日本高清一级婬片a级中文字幕 | 国产精品亚洲四区在线观看 | 日本字幕中文免费高清在线播放 | 91精品国产白丝jk在线拍 | 12孩岁女a处破娇小 欧美午夜色淫网 | 300部国产真实乱 | 精品日本在线免费观看 | 成人年鲁鲁在线观 | 在线观看高清无 | 亚洲国产一区二区午夜福利 | 日韩精品亚洲人成在线观看 | 亚洲国产成a人v在线观看 | 免费成人高清在线视频 | 免费观看交性大片 | 欧美性hd正在播放淫亚洲 | 精品aⅴ老 | 日韩中文字幕免费视频 | 精品无人乱码区1区2区3区 | 韩国电影a级一区二区三区 成人亚洲精品91专区高清 | 国产午夜福利在线观看 | 伊伊人成 | 国产精品亚洲精品专区 | 亚洲精品乱码久 | 国产欧美日韩精品综合在线 | 电视剧大全免费全集观看。 | 日韩欧美中文字幕在线视频 | 91牛牛国产在线无弹窗 | 欧美视频一区二区三区四区 | 日本中文字幕一區二區三區不卡 | 国内揄拍国内精品视 | 亚洲a∨午 | 日韩视频在线播放一区二区三区 | 国产熟女露脸对白硬了精品 | 亚洲精品一区二区国产精华液 | 免费只有精品国产 | 日韩一区精品在线观看 | 91桃色国产线观看免费 | 国产亚洲aⅴ在线观看不卡 国产免费a视频网站在线观看 | 国产福利在线播放 | 国产精品永久视频免费 | 精品欧美一区二区3d动漫 | 在线观看国产视频黄 | 亚洲旡码欧美大片 | 成人免费看片又大又黄 | 18出禁止看的啪视频网站 | 精品成人18成人免费视频 | 日本va欧美va精品发布 | 欧美亚洲日韩在线在线影院 | 国产又大又硬又粗又猛的视频 | 欧美日韩国产免费一 | 国产欧美综合精品一区二区 | 亚洲男人第一αv网站 | 亚洲精品视频一卡二卡三卡 | 欧美中文字幕在线视 | 99久在线国内在线播放 | 国产一区二区三区在线观看视 | 这里只有精品首页 | 91福利影院还会玩转热点 | 最近免费中文字幕视频高清在线看 | 日韩精品欧美大片资源 | 亚洲视频第一页精品 | 国偷自产一区二区三区蜜臀 | 欧美日韩国产另类激情一区 | 国产精品美女一区二区三区 | 国产日本视频 | 亚洲黄免费看网站国产福利一区二 | 国产片高清不卡 | 国产精品中文字幕组 | 国产爽片大全免费在线观看 | 日韩精品激情中文一区 | 亚洲日产综合欧美一区二区 | 女同另类国产精品视频 | 人成视频在线观看国产 | 玖玖综合| 日本午夜福利精品视频 | 99精品国产一区二区三区不卡 | 女同另类激情重口 | 日本中文一 | 欧美性爱网站地址观看 | 日本在线一区二区三区观看 | 欧美亚洲中日韩中文字幕在线 | 制服丝袜自 | 日韩精品一区二区三区vr | 欧美日韩四区在线 | 俺去鲁婷婷六月色综合 | 免费视频专区一国产盗摄 | 免费高清精品国偷自产在线 | 神马午夜电影网 | 欧美淫视频在线观看 | 银娇在线观看 | 国内精品美女a在线播放 | 99re9| 亚洲国产日韩在线人高清 | 成年女人爽到 | 欧美视频精品一区二区 | 国产日韩欧美一区二区三 | 免费看美女脱了全身衣服直播 | a网站在线观看 | 国产看片一区二区三区 | 精品熟女视频一区二区三区国产 | 国产黄大片 | 国产卡一卡二卡四卡无卡 | 国产又粗又大视频 | 国产精品国语刺激对白在线观看 | 日韩一级一欧美一级国产 | 国产一区二区三区免费观看在线 | 日本免费a视频 | 精品在线观看一区 | 国产91尤物在线观看 | 色偷偷人人澡人人添老妇人 | 亚洲视频99| 欧美亚洲国产日韩图片 | 真实国产精品视频400部 | 国产乱子伦一区二区三区 | gogogo免费观看视频高清 | 456性欧美在线 | a级国产乱理论片在线观看看 | 热播电视剧电影高清免费在线观看 | 国产一区二区高清在线 | 天堂中文在线最新版地址 | 国产精品6| h肉视频在线观看 | 网站资源多午夜 | 亚洲亚洲人成网站在线观看 | 国产定点盗摄女厕所合集 | 91极品看片| 国产精品va在 | 国产精品自拍亚洲 | 国产精品任我爽爆在线播放 | 日韩亚洲欧洲精品婷婷涩 | 博士之日 | 成年站免费网 | 亚洲精品视频自拍偷拍 | 欧美综合国产日本 | 91精品国产人成网站 | 久热中文字幕在线播放 | 国产午夜福利在线播放 | 欧产日产国产水蜜桃 | 日韩女同互慰互摸在线观看 | 欧美交换配乱吟粗大免费看 | 国语自产免费精品视频在 | 日韩欧美另类视频在线观看 | 国产日产欧美一区 | 老司机影院 | 美女视频性感网站 | 精品国产亚洲一区二区三区在线观 | 成全免费高清观看 | 国产午夜不卡片免费视频 | 日韩一区二区三区在线网页 | h视频在线观看免费完整版 在线亚洲日韩欧美一区二区 | 91免费在线看 | 国产高清精品福利私拍国产 | 欧美88888在线观看国产 | 国产一区二区三区成人欧美日韩 | 男女做那个视频 | 国产欧美精品国产国产专区 | 日韩一级簧片 | 国产日韩欧美综合一区 | 欧美激情国产在线 | 国语国产自产精品 | 精品欧美一区二区在线观看 | 又色又爽又黄的视频 | 九九在线精品国产 | 精品多人p群 | 欧美日本系列亚洲第一页 | 五月婷婷六月丁香 | 国产精品videosse | 国产精品自在线拍国产第一页 | 国产色色 | 国产超级在线视频观看 | 日韩精品一区二区三区中文在线 | 日本成人一区在线 | 九九视频国产免 | a级国产精品理论片在线观看 | 亚洲精品影院一区二区 | 国产在线观看福利一区二区 | 欧美特黄一免在线观看 | 中文字幕人成乱码熟女69 | 97手机在线视频 | 国产欧美一区二区精品性色99 | 精品国产欧美在线小说区 | 91欧美在线视频 | 妺妺窝人体色777777 | 偷拍视频一区二区三区 | 久热国产在线一区二区v | 欧美的高清视频在线 | 免费视频| 久热这里只有精品无 | 国产91护士玉足脚交在线播放 | 日韩一区二区三区免费网站 | 欧美亚洲自偷自偷图片 | 黑人妖欧美一区 | 国产一卡二卡 | 美女视频黄a视频全免费网站二区 | 国产免费三级a在线观看 | 欧美区一区二区三区四 | 日本午夜www高清视频 | 99亚洲国产综合一区二区 | 欧美激情综合一区二区三区 | 亚洲精品亚洲人成在线播放 | 欧美系列国产系列一二三四 | 757午夜视频国产精品 | 亚洲第一区欧美国产不卡综合 | 国产丶欧美丶日本不卡视频 | 亚洲精品v天堂 | 国产精品亚洲一区在线播放 | 性欧美大战| 在线午夜福利频在线播放 | 日本高清天码一区 | 国产精品天天看特色大片 | 天天澡日日澡狠狠欧美老妇 | 91欧美日韩一区二区三 | 老司机精品福利导航 | 亚州精品一区二区三区 | 欧美日韩高清有码 | 亚洲日本影院在线 | 看日韩精品视频在线观看 | 中文字幕在线观看不卡 | 91日本在线观看亚洲精品 | 日本成年人的色色爱 | 亚洲欧美日韩国产一区二区三区 | 中文字幕永久一区二区三区 | 日本一区二区在线免费观看 | 51妺妺嘿嘿午夜福利 | 俺来也俺也啪www色 二区62 | h的动漫在线观看亚洲一区 片免费看 | 国产又粗又黄又爽又猛的视频 | 成年免费大片黄在线观看一 | 亚洲精品国产第一区第二区国 | 日韩亚洲精品在线播放 | 韩国理伦片一区二区三区在线播 | 国产阿v在线观 | 国产第一在线视频 | 国产精品一区二区日韩91 | 亚洲精品色吧88 | 九九热免费在线观看 | 国产又爽又黄 | 蜜桃色永久入口 | 国产精品激情一区在线观看 | 亚洲小说欧美激情另类 | 涩色综合 | 日韩在线永久免费播放 | 国产农村乱子伦精品视频 | 在线播放免费精品 | 日本连裤袜xxxxx在线视频 | 欧洲欧美人成视频免费播放 | 精品一区二区三区中文字幕 | 午夜福利国产在 | 国产日韩午夜视频一级 | 99在线精品视频在线观看 | 精品亚洲一区二区三区在线播放 | 久+久+亚洲+少+妇+无+码 | 蜜臀91精品国产高清在线观看 | 国产高清在线精品一区免费97 | 97精品国产福利一区二区三区 | 疯狂添女人下 | 国产国语对白露脸 | 337p日本大胆欧美人 | 日韩美一区二区 | 欧美视频精品一区二区 | 欧洲亚洲欧美国产日本高清 | 爱情岛亚洲论坛入 | 热门好看的电影大全 | 国产伦理精品 | 亚洲+变态+欧美+另类+精品 | 国产国产东北 | 亚洲精品综合色区二区 | 国产精品免费入口视频 | 欧美日韩高清国产aⅴ | 久艹色色青青草原网站 | 国产精品拍自在线观看 | 国产91视频一区 | 91尤物视频在线 | 欧美日韩国产高清一区二区三区 | 亚洲第一综合天堂另类专 | 在线观看福利影院 | 欧美日韩午夜国产一区 | 国产卡通动漫在线第一页 | 免费日韩电影网 | bt自拍另类综合欧美 | 最新中文字幕在线观 | 男女激情小视频在线播放免费 | 成人福利在线视频免费观看 | 亚洲国产日韩a在线播放 | 国产欧美日韩精品第二区 | 国产欧色美视频综合二区 | 日本视频一区二区免费播放 | 欧美香蕉大胸在线视频观看 | 国自产精品手机在线观看视 | 在线观看日本欧美综合色 | 成人国产免费软件 | αv天堂在线观看免费αⅴ 亚洲欧美综合人成在线 | 不卡在线播放中文字幕在线 | 日韩免费高清大片在线 | 国产女主播精品 | 国产91视频 | 伦子系列午睡沙发 | 国产一精品一aⅴ一免费 | 午夜福利一区二区电影 | 又硬又粗又长又爽免费看 | 成人一区免费观看 | 国产精品夜色一 | 在线鲁鲁视频免费观看 | 欧美中文日韩在线观看 | 福利一区二区三区视频在线 | 国产特级一 | 欧美一级二级三级在线观看视频 | 日本五月天婷久 | 乱码高清在线观看 | 欧美乱妇日本 | 男女做羞羞的事情网站在线观看 | 欧美日韩亚洲高清精品 | 欧美另类亚洲一区二区 | 国产精品r级最新在线观看 国产欧美日韩亚洲精品中文专区 | 观看www成人影院 | 欧美.日韩.日本国产视频 | 五月丁香六月婷婷综合网缴情 | 91tv成人 | 日韩专区青草视频在线观看 | 好吊操视| 在线观看三缀片免费视频电 | 卡一卡二卡三精品入口 | 亚洲一区二区三区四区 | 老司机深夜免费福利 | 欧美一区日 | 尤物精品视频一区二区三区 | 911亚洲精品国产自产 | 国产自拍后入在线观看 | 深夜激情网 | 国产免费人成视频网站在线看 | 日本一区二区 | 欧美、另类亚洲日本一区二 | 国产精品免费无 | 免费精品日本 | 免费a级毛视频 | 看黑人巨大精品欧美一区 | 国产精品网站在线观看 | 韩国日本三级在线播放 | 欧美.成人.综合在线 | 欧美日韩变态另类在线观看 | 成人国产欧美精品一区二区 | 91精品一区二区三区在线播放 | 激情视频一区二区三区 | 强奷漂亮的 | 国产蜜芽免费在线观看 | 91香蕉成人 | 国产精品午夜未成人免费观看 | 2区3区在线观看 | 国产日韩欧美另类 | 激情五月综合网 | 国产大片免费天天看 | 国产乱码高清区二区三区在线 | 日本视频网站www色高清免费 | 欧美日韩精品专区在线 | 国产在线观看h尤 | 中国在线观看免费的www | 午夜亚洲国产理论片秋霞 | 国产亚洲精品成人 | 国产精品社区在线观看 | 美丽的姑娘高清版在线观看 | 日韩精品大秀视频在线观看 | 亚洲欧美日韩国产综合点此进入 | 男人都懂www深夜免费网站 | 免费国产午夜高清在线视频 | 91色色| 国产aⅴ视频免费观看国语 日韩欧美国产免费看清风阁 | 欧美精品亚洲精品日韩专区 | 日韩专区一中文字目一区二区 | 国产精品不卡高清在线观看 | 精品亚洲a∨ | 国产乱码精品一区二区三区卡 | 欧美日韩亚洲国产一区二区三区 | 国产精品视频丁香花综合 | 九一国产在线视频免观看 | 国产91视频网 | 亚洲高清二区 | 日本乱码乱码免费高清视频 | 国产99精品日韩制服 | 日韩精品高清在线亚洲天堂 | 91福利国产在 | 国一产区视频 | 欧美产国产 | 精品亚洲综合在线第一区 | 亚洲人成色77777在线观看 | 日韩免费无 | 99欧美 | 97韩剧tv网| 国产精品综合亚洲91成人 | 国产在线视频自拍 | health2健健康康 | 欧美a级片一区二区在线播放 | 国产盗拍精品视频 | 91香蕉下载| 精品丝袜国产自在线拍a∨婷婷 | 国产婷婷一区二区三区 | 欧美福利影院第一页 | 亚洲欧美网站 | 国产91小视频在线观看 | 天美传媒果冻传媒国产日本 | 国产日韩欧美视频网址 | 国产一区二区xxx | 亚洲日韩成人 | 羞羞视频在线观看 | 国产又粗又黄又爽的大片 | 欧美日韩在线视频播放 | 日韩一区二区三区免费高清 | 国产精品看 | 国产欧美一区二区樱花在线观看 | 国产制服美女在线观看 | 乱码精品一区二区三区四川人 | 人性情感短| 欧美日韩在线播一区二区三区 | 边做边爱完整版免费视频播放 | 国产精品欧美日韩区二区 | 巨大黑人极品videos精品 | 欧美性猛交xxxx乱大交3 | 免费人成年短视频免费网站 | 亚洲午夜精| 私人情侣影院在线电影院 | 91高清国| 中文字幕亚洲精品资源网 | 任我爽橹在线视频精品583 | 一级特黄a大片 | 国产女主播一区 | 亚洲视频一区 | 精品午夜福利日 | 日本中文字幕乱码aa高清电影 | 国产亚洲欧美在线观看三区 | 精品国产不卡女 | 亚洲色熟女图激情另类图区 | 亚洲人午夜射精精品日韩 | 国产精品偷伦视频免 | 日韩国产亚洲精品制服另类 | 国产精品丝袜一区二区三区 | 欧在线一二三四区 | 欧美国产日韩a欧美在线观看 | 日韩一区二区三区美女 | 精品国产日韩专区欧美第一页 | h成人动漫| 国产盗摄视频在线 | 国产人免费视频成69 | 正在播放国产精品 | 亚洲人成中文字幕在线观看 | 欧美性生 | 国产精品大神在线播放 | 欧美乱妇日本无乱码特黄大片 | 精品影片在线观看的网站 | 欧美日韩在线免费 | 国产精品三级一区二区秒拍 | 涩涩国产精| 午夜理论片大全福利 | 精品欧美亚洲影视 | 欧美日韩国产在线一区二区 | 精品一区二区三区夜夜嗨 | 国产欧美日韩精品在线一区 | 午夜福利一区二区电影 | 九九91精品国产 | 亚洲aⅴ永久无 | 韩国午夜理伦三级理论在线观看 | 日韩免费视频播播 | 国产美女一级做视频爱 | 国产高清精品亚洲明星换脸 | 国产精品素 | 亚洲精品视频免费观看 | 欧美不卡一区二区 | 久艹色色青青草原网站 | 国产资源在线观看免费高清 | 精品中文高清欧 | 欧美一级视频在 | 中文视频二 | 日韩不卡一区二区三区在线 | 亚洲欧美日韩一区高清中文字幕 | 丁香伊人| 国产区在线视频 | 欧美美女视频一区二区三区 | 欧美激情αv一区二区三区 国内精品自在自线2025 | 国产亚洲欧美在线播放网站 | 精品国产柚木在线观看 | 欧美日韩国产码高清综合人成 | 另类图区亚 | 91po最新国产在线 | 国产97在线视频观看 | 区二区三区观 | 欧美日韩国产第1 | 国产乱子影视频上线免费观看 | 国产精品边做奶水狂喷 |