精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Silverlight中實現(xiàn)強壯的、可復用的拖放行為

原創(chuàng)
開發(fā) 后端
富互聯(lián)網(wǎng)應用程序通過Silverlight、Ajax和Flash技術繼續(xù)保持增長,在這些應用程序中采用普通桌面用戶界面(UI)的例子也在不斷增加,最明顯的例子也許要算拖放行為了。本文將為大家講解如何在Silverlight中實現(xiàn)強壯的、可復用的拖放行為。

【51CTO獨家特稿】簡單的Silverlight拖放行為可以通過某些Silverlight控制實現(xiàn),但Silverlight的總 體表現(xiàn)卻沒有WPF中對行為控制得那么好,不過可以使用附加的行為操作元素的RenderTransform,這樣可以 大大增加Silverlight中拖放實現(xiàn)的強壯性和可復用性。

新型實現(xiàn)

默認情況下Silverlight通過System.Windows.Controls.Primitives中的Thumb控制讓拖放支持變得更容易 ,實現(xiàn)拖放最簡單的方法是使用Thumb控制和為應用程序外觀應用合適的ControlTemplate(控制模板)。但 在某些情況下,使用Thumb不太實際,在XAML中要“模板”化一個Thumb控制是很笨重的,你必須在你使用的 每個單獨的區(qū)域中為應用程序邏輯重復一次這個行為,隨著應用程序的增長,這種需求將會使應用程序的維 護變得異常困難。

不過有兩個新方法讓你可以在任何UI元素上開啟拖放操作,下面是***個方法:

MouseMove="DragDelta" MouseLeftButtonDown="DragStart" MouseLeftButtonUp="DragComplete"

VerticalAlignment="Top" Fill="#FFC20707" Stroke="#FF000000"/>

這個實現(xiàn)最重要的就是具體開啟拖放操作的事件:MouseMove、MouseLeftButtonDown和 MouseLeftButtonUp,通過在這些事件上增加處理程序,你就可以執(zhí)行一些簡單的拖放操作了。

第二個方法是:

private bool isDragging = false;

private void DragStart(object sender, MouseButtonEventArgs args)

{

   Shape draggable = sender as Shape;

   if (draggable != null)

   {

      isDragging = true;

      draggable.CaptureMouse();

   }

}

private void DragDelta(object sender, MouseEventArgs args)

{

   Shape draggable = sender as Shape;

   if (draggable != null && isDragging)

   {

      Point currentPosition = args.GetPosition(null);

      TranslateTransform transform = draggable.RenderTransform

         as TranslateTransform;

      if (transform == null)

      {

         transform = new TranslateTransform();

         draggable.RenderTransform = transform;

      }

 

      transform.X = (currentPosition.X - draggable.Width / 2);

      transform.Y = (currentPosition.Y - draggable.Height / 2);

   }

}

 

private void DragComplete(object sender, MouseButtonEventArgs args)

{

   Shape draggable = sender as Shape;

   if (draggable != null)

   {

      isDragging = false;

      draggable.ReleaseMouseCapture();

   }

}

正如你所看到的,通過影響控制RenderTransform而不是特定面板布局參數(shù),如Canvas.Top和Canvas.Left 等附加屬性,或是Grid邊緣空白,你可以將一個元素移動到任何一個容器中,而且這種方法對任何一個UI元 素都是可復用的,它不允許你橫跨不同的控制重新使用應用程序邏輯,為此,你需要一個具有附加行為的實 現(xiàn)。

使用附加行為

WPF和.NET 3.0引入了依賴屬性概念,也就是說當屬性發(fā)生變化后,它會通知所有者(它必須是一個 DependencyObject[依賴對象]),允許所有者執(zhí)行一塊應用程序邏輯。

有兩種類型的依賴屬性,最常用的是依賴屬性自身,建立和使用DependencyProperty.Register進行設置 都是相同的依賴對象。第二種類型是附加屬性,使用DependencyProperty.RegisterAttached進行設置,附加 屬性被設置為它所有者不同的類型。

看一下下么的附加屬性例子:

public static readonly DependencyProperty HoverProperty = 

   DependencyProperty.RegisterAttached(

   "Hover",

   typeof(Brush),

   typeof(Hover),

   new PropertyMetadata(null, OnHoverChanged));

通過事件處理程序OnHoverChanged,當你在XAML中設置那個屬性時,你可以提供一些應用程序邏輯:

private static void OnHoverChanged(DependencyObject obj,   

   DependencyPropertyChangedEventArgs args)

{

   Border border = obj as Border;

   if (border != null)

   {

      if(args.OldValue == null && args.NewValue != null)

      {

         border.MouseEnter += SetHoverBackground;

         border.MouseLeave += SetNotHoverBackground;

      }

      else if(args.OldValue != null && args.NewValue == null)

      {

         border.MouseEnter -= SetHoverBackground;

         border.MouseLeave -= SetNotHoverBackground;

      }

   }

}

OnHoverChanged代碼僅僅簡單地增加了事件處理程序,在觸發(fā)MouseEnter事件時修改對象的背景顏色,觸 發(fā)MouseLeave事件時還原到對象的原始顏色,這段簡短的代碼功能叫做附加行為,附加行為是后面章節(jié)講述 的拖放實現(xiàn)的核心概念,下么來看一個附加行為IsEnabled:

public static readonly DependencyProperty IsEnabledProperty
=

   DependencyProperty.RegisterAttached(

   "IsEnabled",

   typeof(bool),

   typeof(SimpleDragDropBehavior),

   new PropertyMetadata(false, OnIsEnabledChanged));

通過注冊OnIsEnabledChanged作為改變事件處理程序的屬性,你可以訂閱你前面使用的事件處理程序:

private static void OnIsEnabledChanged(DependencyObject obj, 

   DependencyPropertyChangedEventArgs args)

{

   UIElement dragSource = obj as UIElement;

 

   bool wasEnabled = (args.OldValue != null) ? (bool)args.OldValue : false;

   bool isEnabled = (args.NewValue != null) ? (bool)args.NewValue : false;

//如果行為被禁用,移除這個事件處理程序

   if (wasEnabled && !isEnabled)

   {

      dragSource.MouseLeftButtonDown -= DragStart;

   }

//如果行為被附加,添加這個事件處理程序

   if (!wasEnabled && isEnabled)

   {

      dragSource.MouseLeftButtonDown += DragStart;

   }

}

改變事件處理程序的屬性IsEnabled使用前面談到的新型實現(xiàn)向事件添加處理程序,因此,只需要在你的 應用程序中任何或是有UI元素上重復使用這個行為,但這種新型實現(xiàn)有其自身的設置限制,還不能立即顯現(xiàn) 出來。

調(diào)用args.GetPosition(null)跟蹤絕對位置不能適應一個允許嵌套拖放的行為,更好的解決辦法是反復計 算拖動的變量,為了解決這個限制,你可以轉向私有附加屬性,在思考私有附加行為的范圍時,私有附加屬 性和私有成員變量或屬性類似,公共附加行為和公共附加屬性類似。因為你只需要跟蹤你所選元素的x和y坐 標值,因此需要兩個私有附加屬性:

public static readonly DependencyProperty XProperty = 

   DependencyProperty.RegisterAttached(

   "X",

   typeof(double),

   typeof(DragDropBehavior),

   new PropertyMetadata(double.NaN));

 

public static readonly DependencyProperty YProperty =

   DependencyProperty.RegisterAttached(

   "Y",

   typeof(double),

   typeof(DragDropBehavior),

   new PropertyMetadata(double.NaN));

這些屬性的默認值都是double.NAN,表明對象當前沒有拖放位置,這對于后面拖放元素時重置元素是很重 要的,此外這些私有附加屬性,你還需要知道哪些容器是用于參照的,也就是說你需要指定原始的坐標值, (X,Y) = (0,0),你只需要簡單地位你的宿主指定另一個附加屬性:

public static readonly DependencyProperty IsHostProperty 

= 

   DependencyProperty.RegisterAttached(

   "IsHost",

   typeof(bool),

   typeof(DragDropBehavior),

   new PropertyMetadata (false));

現(xiàn)在你已經(jīng)為你反復跟蹤拖放行為建立起了必要的數(shù)據(jù),你需要做的全部內(nèi)容是實現(xiàn)前面定義的相同的三 個處理程序:DragStart,DragDelta,DragComplete。在DragStart中,你可以增加更多的功能,在你的行為 類中改成使用靜態(tài)函數(shù):

private static void DragStart(object sender, MouseButtonEventArgs args)

{

   UIElement dragSource = sender as UIElement;

//創(chuàng)建執(zhí)行拖動操作的TranslateTransform

   TranslateTransform dragTransform = new TranslateTransform();

   dragTransform.X = 0;

   dragTransform.Y = 0;

//如果是首次使用拖放,先要設置TranslateTransform

   dragSource.RenderTransform = (

      dragSource.RenderTransform is TranslateTransform) ?

      dragSource.RenderTransform : dragTransform;

//分別為MouseMove和MouseLeftButtonUp添加事件處理程序

   dragSource.MouseMove += OnDragDelta;

   dragSource.MouseLeftButtonUp += OnDragComplete;

//捕獲鼠標

   dragSource.CaptureMouse();

}

這和你最初的實現(xiàn)相差不多,你獲得了一個拖動項目,設置它的RenderTransform,附加適當?shù)氖录幚?程序,并捕獲鼠標。但DragDelta實現(xiàn)完全不同,因為你現(xiàn)在跟蹤的是鼠標動作了,你需要:

1、找到你的宿主容器;

2、相對這個容器計算當前位置;

3、比較前一次記錄的位置和現(xiàn)在的位置,計算出拖動變量;

4、更新RenderTransform和你的私有附加屬性,x和y。

private static void DragDelta(object sender, MouseEventArgs args)

{

   FrameworkElement dragSource = sender as FrameworkElement;

//計算dragSource的偏移量,更新TranslateTransform

   FrameworkElement dragDropHost = FindDragDropHost(dragSource);

   Point relativeLocationInHost = args.GetPosition(dragDropHost);

   Point relativeLocationInSource = args.GetPosition(dragSource);

//獲得當前位置

   double xPosition = GetX(dragSource);

   double yPosition = GetY(dragSource);

//從前一次位置計算變數(shù)

   double xChange = relativeLocationInHost.X - xPosition;

   double yChange = relativeLocationInHost.Y - yPosition;

//如果這不是首次鼠標移動,更新位置

   if (!double.IsNaN(xPosition))

   {

      ((TranslateTransform)dragSource.RenderTransform).X += xChange;

   }

 

   if (!double.IsNaN(yPosition))

   {

      ((TranslateTransform)dragSource.RenderTransform).Y += yChange;

   }

//更新你的私有附加屬性跟蹤拖動位置

   SetX(dragSource, relativeLocationInHost.X);

   SetY(dragSource, relativeLocationInHost.Y);

}

需要特別指出的是找出參照宿主非常重要,不過說來也很簡單,只需要在可視化樹結構中搜索IsHost = true即可。

DragComplete新的實現(xiàn)

現(xiàn)在,DragStart和DragDelta中的部件算是全部弄好了,現(xiàn)在只剩下DragComplete了,和DragStart一樣 ,DragComplete實現(xiàn)和你的新型實現(xiàn)不是完全一樣,值得注意的是它移除了事件處理程序,并釋放了鼠標捕 獲,你也必須重置你的私有附加屬性x和y,指出拖動項目不再進行拖動了。

private static void DragComplete(object sender, 

   MouseButtonEventArgs args)

{

   UIElement dragSource = sender as UIElement;

   dragSource.MouseMove -= DragDelta;

   dragSource.MouseLeftButtonUp -= DragComplete;

//設置x和y的值,以便下一次MouseDown時好重置

   SetX(dragSource, double.NaN);

   SetY(dragSource, double.NaN);

//釋放鼠標捕獲

   dragSource.ReleaseMouseCapture();

}

這個新的迭代實現(xiàn)克服了前面描述的限制,它也允許流暢跟蹤鼠標,在新的實現(xiàn)中,你只需要把鼠標放在 拖動項目的中心,在前面的實現(xiàn)中,鼠標需要保持放在容器里面。

public static FrameworkElement FindDragDropHost(

   UIElement element)

{

   DependencyObject parent = VisualTreeHelper.GetParent(element);

   while (parent != null && !GetIsHost(parent))

   {

      parent = VisualTreeHelper.GetParent(parent);

   }

   return parent as FrameworkElement;

}

限制和擴展

值得注意的是本文講述的拖放行為也有一些限制,這將成為未來的改進方向。首先,即使這種方法能夠在 一個容器中實現(xiàn)簡單的拖放,但在拖放的不同階段不能接受更強壯的應用程序邏輯,但在WPF中卻可以實現(xiàn), 如DragEnter、DragLeave和Drop在Silverlight中就還不能實現(xiàn),但你可以通過自定義附加事件實現(xiàn)來增加這 些功能。

在設置IsEnabled后,行為也不能執(zhí)行自定義拖放邏輯,如果在拖放實現(xiàn)中使用了Canvas.Top和 Canvas.Left,意味著你需要使用獨立的附加行為,而不是使用自定義事件。這是因為Silverlight缺乏附加 事件引起的,在Silverlight 3.0這將可能會有這些特性,但你可以通過復雜的行為實現(xiàn)來克服這些限制,這 個內(nèi)容已經(jīng)超出了本文的范疇,這里概述的方法傾向為一個起點,更好的實現(xiàn)希望通過開源Silverlight庫 Quasar來實現(xiàn)。

您正在閱讀的是51CTO獨家特稿《Silverlight中實現(xiàn)強壯的、可復用的拖放行為

【編輯推薦】

  1. VS 2010 Beta1和Silverlight不得不說的事
  2. Flash與Silverlight多領域實測對比
  3. 詳解 Silverlight和WPF互相擴展
責任編輯:彭凡 來源: 51CTO
相關推薦

2009-09-02 18:28:55

.NET框架ESBasic

2009-12-30 10:25:03

Silverlight

2009-03-16 09:16:13

行為擴展WCF.NET

2022-03-11 11:51:16

自動駕駛智能技術

2023-08-26 20:51:25

Python函數(shù)代碼

2009-02-20 08:54:20

DownloaderSilverlight對象

2009-06-03 10:24:11

LoadMaskSilverlight

2024-12-20 19:38:01

ToB業(yè)務狀態(tài)轉換

2017-10-26 21:08:15

Tomcat可插拔SCI

2009-09-27 13:38:03

Silverlight

2009-09-28 10:35:45

Silverlight

2009-11-06 13:40:30

Silverlight

2021-02-02 11:02:20

React任務饑餓行為優(yōu)先級任務

2010-06-02 09:25:29

Silverlight

2009-11-26 13:12:16

Silverlight

2010-04-23 13:23:42

Silverlight

2017-11-08 12:51:12

2023-12-15 16:07:40

物聯(lián)網(wǎng)

2009-06-29 18:09:12

多路復用Oracle

2009-02-09 08:55:12

ArcGIS API發(fā)布Silverlight
點贊
收藏

51CTO技術棧公眾號

人妻妺妺窝人体色www聚色窝 | 欧美性猛交xxxx免费看| 91久久久久久久久久久| 美女视频久久久| 天堂av一区| 亚洲午夜电影在线| 久久另类ts人妖一区二区| 精品不卡一区二区| 亚洲综合精品在线| 高清不卡亚洲| 国产精品久久久久久妇女6080| 成人国产亚洲精品a区天堂华泰| 精品99在线观看| 亚洲图片久久| 欧美乱妇15p| 久久精品国产sm调教网站演员| 精华区一区二区三区| 久久蜜桃资源一区二区老牛| 日韩在线观看免费全| 久久一区二区三区欧美亚洲| 99热只有这里有精品| 国产精品免费大片| 欧美一卡在线观看| 999香蕉视频| 污污片在线免费视频| 99久久精品国产一区| 国产精品视频一区二区三区四| 国产精品久久久久久久久借妻| 香蕉视频xxxx| 日韩av一卡| 亚洲色图一区二区三区| 美女主播视频一区| 国产黄色大片网站| 老司机精品久久| 欧美国产第一页| 五月婷婷六月香| 久久久亚洲欧洲日产| 色域天天综合网| www婷婷av久久久影片| 国产h在线观看| 国精品**一区二区三区在线蜜桃 | 精品人妻互换一区二区三区| 免费看日产一区二区三区 | 欧美日韩亚洲免费| 亚洲精品国产精| 人人精品人人爱| 亚洲91av视频| 国产亚洲欧美久久久久| 色狮一区二区三区四区视频| 亚洲第一视频网| 国产一区二区三区毛片| 一级黄色香蕉视频| 小早川怜子影音先锋在线观看| 亚洲精品第1页| 中文字幕一区二区三区在线乱码 | 国产精品久久久久9999高清| 不卡av在线播放| 青青操在线播放| 国产不卡一二三区| 精品一区二区电影| 国产精品扒开腿做爽爽爽a片唱戏| 一呦二呦三呦精品国产| 亚洲一区二区视频在线| 隔壁人妻偷人bd中字| 精精国产xxxx视频在线中文版| 亚洲一区二区三区视频在线| 久久久久久人妻一区二区三区| 97人人爽人人澡人人精品| 午夜伦欧美伦电影理论片| 国产97在线 | 亚洲| 中文字幕乱码中文乱码51精品| 色婷婷精品久久二区二区蜜臀av | 成人做爰免费视频免费看| 欧洲精品中文字幕| 欧美性猛交xxxx乱大交91| 日韩精品一区二区三区中文在线| 亚洲成人动漫在线播放| 粉嫩av蜜桃av蜜臀av| 精品国产日韩欧美| 免费不卡在线观看av| 国产精品2020| 日韩激情一二三区| 91丝袜美腿美女视频网站| 亚洲精品18p| 久久精品夜色噜噜亚洲a∨| 亚洲巨乳在线观看| 黄网站在线观| 欧美性色欧美a在线播放| 天天av天天翘天天综合网| 少妇熟女一区二区| 白浆在线视频| 欧美综合亚洲图片综合区| 网站在线你懂的| 久久午夜影院| 深夜福利国产精品| 日本五十熟hd丰满| 另类综合日韩欧美亚洲| 成人欧美一区二区三区在线观看 | 国产三级一区二区三区| 日本特级黄色大片| 欧美极品videos大乳护士| 欧美日韩国产中文| 老熟妇精品一区二区三区| 日韩大片在线| 午夜精品一区二区三区视频免费看 | 国产精品一区二区久久久久| 亚洲老妇色熟女老太| 国产三级三级三级精品8ⅰ区| 日韩一级特黄毛片| 欧洲美女精品免费观看视频| 日韩av在线免费观看| 亚洲二区在线播放| 久久精品电影| 国产免费一区二区| 九色porny在线| 色呦呦日韩精品| 美女流白浆视频| 欧美大片aaaa| 国产成人精品久久| 色一情一乱一乱一区91av| 国产精品福利一区二区三区| 国产成人久久婷婷精品流白浆| 欧美视频三区| x99av成人免费| 最近中文字幕av| 国产精品毛片aⅴ一区二区三区| 一区二区中文字幕在线| 人妻有码中文字幕| 欧美理伦片在线播放| 精品中文字幕在线2019| 11024精品一区二区三区日韩| 91视频xxxx| 精品无码一区二区三区爱欲| 国产精品一区二区精品| 日韩中文字幕免费| 国产乱码在线观看| 久久久久99精品一区| 69堂免费视频| 精品中国亚洲| 69影院欧美专区视频| 欧美 日韩 国产 在线| 亚洲综合另类小说| 免费观看一区二区三区| 在线精品视频在线观看高清| 成人精品视频在线| 欧美另类极品| 91精品在线麻豆| 四虎永久免费地址| 精品一区二区免费| 一区二区三区视频在线播放| 欧美一级做a| 久久视频国产精品免费视频在线| 国产女人高潮的av毛片| 亚洲精品五月天| 日本精品一二三区| 国产视频一区免费看| 蜜桃传媒视频麻豆第一区免费观看 | 亚洲天堂久久久久| 国产精品久久久久一区 | 久久中文字幕无码| 不卡一区中文字幕| 久久久一本二本三本| 真实原创一区二区影院| 国产精品久久久久秋霞鲁丝| 自拍视频在线网| 欧美激情黄色片| 国产成+人+综合+亚洲欧美丁香花| 男人天堂网在线观看| 欧洲视频一区二区| 成年人二级毛片| 成人美女在线视频| 午夜精品久久久内射近拍高清| 国产乱码精品一区二区三区四区| 国产日韩欧美91| 在线免费av导航| 日韩精品视频在线免费观看| 国产精品露脸视频| 亚洲美女淫视频| 国产白嫩美女无套久久| 日韩不卡一区二区三区| 一级全黄肉体裸体全过程| 这里视频有精品| 欧美最猛性xxxxx免费| 超碰在线影院| 亚洲第一免费网站| 中文字幕乱码人妻无码久久| 一区二区三区在线免费视频| 亚洲综合网在线观看| 久久成人羞羞网站| 精品国产一区三区| 久久一本综合| 国产三区二区一区久久| av成人免费| 97高清免费视频| 日本不卡不卡| 亚洲男女性事视频| 国产视频aaa| 色综合久久久久久久| 懂色av懂色av粉嫩av| 91欧美一区二区| 欧美性猛交xx| 欧美aaaaa成人免费观看视频| 欧洲精品在线播放| 欧美gayvideo| 欧洲一区二区在线观看| 97品白浆高清久久久久久| 国产精品久久二区| 黄色激情在线播放| 久久91亚洲精品中文字幕奶水| 高潮一区二区三区乱码| 日韩欧美福利视频| 日韩xxxxxxxxx| 亚洲精品精品亚洲| 91观看网站| 黄网站在线播放| 亚洲一区www| 欧美视频在线观看一区二区三区| 欧美精品色综合| 亚洲 日本 欧美 中文幕| 亚洲福利视频导航| 波多野结衣在线网址| 国产精品色婷婷久久58| 亚洲午夜久久久久久久久红桃| 国产成人亚洲精品青草天美| 一区二区久久精品| 蜜臀av性久久久久蜜臀aⅴ流畅| 欧美 日韩 国产 高清| 激情久久五月| 久久久久久久久网| 亚洲天堂免费| 国产高潮呻吟久久久| 日韩激情一区| 亚洲精品日韩在线观看| 精品国产精品国产偷麻豆| 欧美精品一区二区三区久久| 国偷自产视频一区二区久| 成人动漫在线观看视频| 精品中文字幕一区二区三区| 成人妇女免费播放久久久| 九九九精品视频| 国产精品视频地址| 草莓视频成人appios| 国产精品男人爽免费视频1| 88xx成人永久免费观看| 国产成人精品一区二区| 男人皇宫亚洲男人2020| 日韩av毛片网| 日本精品裸体写真集在线观看| 国产精品久久久久91| 成人高清一区| 成人精品网站在线观看| 国产精品一级在线观看| caoporn国产精品免费公开| 亚洲不卡视频| 国产伦精品一区二区三区高清版| 欧美男人操女人视频| 国产中文一区二区| 久久99免费视频| 亚洲二区自拍| 欧美激情欧美| 久久久久久久久久伊人| 在线国产精品一区| 国产精品秘入口18禁麻豆免会员| 亚洲综合国产激情另类一区| 日韩毛片在线免费看| 开心久久婷婷综合中文字幕| 欧美在线观看禁18| 国产性猛交╳xxx乱大交| 在线免费亚洲电影| 91av国产精品| 日韩精品中文字幕一区| 五月天婷婷在线播放| 亚洲色图综合久久| 大片免费在线看视频| 久久久久久久国产| 国产综合色区在线观看| 成人福利视频网| 麻豆国产欧美一区二区三区r| 欧美一区国产一区| 国产精品久久久久无码av| 国产自产在线视频| 日韩综合一区二区| 日本亚洲一区二区三区| 26uuu欧美| 久久99久久99精品免费看小说| 亚洲成人激情av| 正在播放木下凛凛xv99| 精品国免费一区二区三区| 噜噜噜噜噜在线视频| 久久国产精品电影| 在线天堂资源| 91福利视频导航| blacked蜜桃精品一区| 日韩在线视频在线| 日本大胆欧美人术艺术动态| 性鲍视频在线观看| 国产亚洲综合av| 欧美日韩在线国产| 欧美亚洲综合网| 色屁屁草草影院ccyycom| 在线国产精品视频| 欧美激情护士| 97se在线视频| 97久久夜色精品国产| 欧美一区二区三区爽大粗免费| 国内久久精品视频| www亚洲色图| 欧美日韩激情小视频| 国产成人av免费看| 中文字幕成人精品久久不卡| 国产在线天堂www网在线观看| 成人综合国产精品| 精品日韩欧美一区| 国产91美女视频| 成人免费高清在线观看| 欧美成人777| 欧美三级日本三级少妇99| 日本亚洲一区| 午夜精品视频网站| 亚洲国产高清在线观看| 一区二区视频在线播放| 日韩中文字幕区一区有砖一区| 一级欧美一级日韩片| 欧美成人一级| 高清视频一区二区三区| 亚洲高清资源在线观看| 日日噜噜夜夜狠狠| 国产色产综合产在线视频| 一区二区三区视频免费看| 日韩美女一区二区三区四区| 黄av在线免费观看| 91精品美女在线| 香蕉综合视频| 日本美女视频一区| 国产精品第一页第二页第三页| 中文天堂在线播放| 国产一区二区三区免费视频| 亚洲综合电影| 欧美日韩在线播放一区二区| 悠悠资源网久久精品| 日本50路肥熟bbw| 亚洲一级不卡视频| 欧美熟妇乱码在线一区| 久久久最新网址| 日韩福利视频一区| 一女被多男玩喷潮视频| 久久综合五月天婷婷伊人| 日韩精品1区2区| 亚洲欧美日韩另类| 精品三区视频| 亚洲一区二区三区精品在线观看| 青青草97国产精品免费观看无弹窗版| 老熟妇一区二区| 欧美日韩国产片| av网站大全在线| 成人精品水蜜桃| 在线视频精品| 久久精品—区二区三区舞蹈| 欧美色电影在线| 国产婷婷视频在线| 97视频资源在线观看| 亚洲欧洲一区二区天堂久久| 久久久久久久久久久国产精品| 在线精品视频免费播放| 欧美日韩欧美| 不卡视频一区二区三区| 国产一区二区你懂的| 高清国产在线观看| 欧美二区乱c少妇| 美女网站视频在线| 久久99国产精品99久久| 日本最新不卡在线| 免费高清在线观看电视| 精品国产一区二区三区不卡| 蜜桃视频www网站在线观看| 日韩电影免费观看在| 极品销魂美女一区二区三区| 国产真人真事毛片| 亚洲最新av在线网站| 麻豆精品久久| 国产超级av在线| 国产精品进线69影院| 欧性猛交ⅹxxx乱大交| 国产精品aaaa| 亚洲欧美综合| 大又大又粗又硬又爽少妇毛片 | 久久精品亚洲一区| 久久综合社区| jizzzz日本| 午夜久久久影院| 免费av在线| 欧美日韩精品久久久免费观看| 精品一区二区三区香蕉蜜桃| xxxxxx国产| 久久精品视频播放| 蜜臀91精品国产高清在线观看| 国产精品久久久久久9999| 欧美日韩免费一区| a天堂中文在线官网在线| 欧美精品尤物在线|