国产精品青草久-国产精品情侣愉拍-国产精品区网红主-国产精品区一区二-国产精品热久久-国产精品热热热-国产精品人aⅴ-国产精品人成在线-国产精品人妻人伦-国产精品人人

金喜正规买球

Silverlight DataGrid中增加AutoCompleteBox列的方法

轉(zhuǎn)帖|其它|編輯:郝浩|2011-03-25 16:26:57.000|閱讀 1406 次

概述:本文介紹為silverlight DataGrid增加AutoCompleteBox列的兩種方法,眾所周知DataGrid有個(gè)模板列 (DataGridTempleteColumn)列,其功能非常強(qiáng)大,在模板列中基本上什么組件都可以放,因此我們不難想到用模板列很容易就可以實(shí)現(xiàn). 下面展示模板列的方式的幾個(gè)步驟。

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

  本文介紹為silverlight DataGrid增加AutoCompleteBox列的兩種方法,眾所周知DataGrid有個(gè)模板列(DataGridTempleteColumn)列,其功能非常強(qiáng)大,在模板列中基本上什么組件都可以放,因此我們不難想到用模板列很容易就可以實(shí)現(xiàn).下面展示模板列的方式的幾個(gè)步驟:

  1.在Resource中定義AutoCompleteBox的ItemTemplate,定義下拉列表中的每一項(xiàng)的顯示方式及其內(nèi)容.

<data:DataGrid.Resources>  

<DataTemplate x:Name="currencyDataTemplate&quot;&gt;  

 <TextBlock Text="{Binding Path=Name}"/>  

</DataTemplate>  

</data:DataGrid.Resources>  

  2.定義AutoCompleteBox的數(shù)據(jù)源

<data:DataGrid.Resources>
  <riaControls:DomainDataSource x:Key=

"currencyDomainDataSource" AutoLoad="True" 
d:DesignData="{d:DesignInstance models:Currency, CreateList=true}" Height="0" 
  LoadedData= "currencyDomainDataSource_LoadedData"; 

Name="currencyDomainDataSource" 
QueryName= "GetCurrenciesQuery" Width="0">
  <riaControls:DomainDataSource.DomainContext>
  <services:MtsDomainContext />
     </riaControls:DomainDataSource.DomainContext>
  </riaControls:DomainDataSource>

      <DataTemplate x:Name="currencyDataTemplate">
         <TextBlock Text="{Binding Path=Name}"/>
      </DataTemplate>
                
  </data:DataGrid.Resources>

  2.定義DataGridTemplateColumn字段

<data:DataGridTemplateColumn x:Name="currencyColumn" 

Header="Currency" Width="SizeToHeader">  
     <data:DataGridTemplateColumn.CellTemplate>  
         <DataTemplate>  
  <TextBlock Text="{Binding&nbsp;Currency}" VerticalAlignment=

"Center" Margin="3"/>  
         </DataTemplate>  
     </data:DataGridTemplateColumn.CellTemplate>  
     <data:DataGridTemplateColumn.CellEditingTemplate>  
         <DataTemplate>  
             <input:AutoCompleteBox x:Name="currencyAutoComplete" Text="{Binding Path=CurrencyID,Mode=TwoWay}"                                                       
  ItemsSource= "{Binding Path=Data,Source=

{StaticResource currencyDomainDataSource}}"  
  ValueMemberPath= "Name" ItemTemplate=

"{StaticResource currencyDataTemplate}" />    
         </DataTemplate>  
     </data:DataGridTemplateColumn.CellEditingTemplate>  
</data:DataGridTemplateColumn>  

  3.如果需要,實(shí)現(xiàn)轉(zhuǎn)換器類,實(shí)現(xiàn)IValueConverter接口,binding表達(dá)式中指定轉(zhuǎn)換器

  在上面例子中數(shù)據(jù)源的CurrencyID對(duì)應(yīng)Currency的ID字段,用戶輸入時(shí)輸入Currency的Name字段,因此需要ID和Name之間進(jìn)行轉(zhuǎn)換.

 public class CurrencyValueConverter : IValueConverter
     {

         #region IValueConverter Members
        
  &nbsp;      public object Convert(object value, Type targetType, 

object parameter, System.Globalization.CultureInfo culture)
         {
             //這里實(shí)現(xiàn)轉(zhuǎn)換成Name
             return value;            
         }

  public object ConvertBack(object value, Type targetType, 

object parameter, System.Globalization.CultureInfo culture)
         {
             //這里實(shí)現(xiàn)從Name轉(zhuǎn)換成ID
             return value;
         }

         #endregion

  4.在Resouces中聲明Converter

  1. <helper:CurrencyValueConverter x:Key="currencyValueConverter"/>  

  5.修改binding語(yǔ)句指定Converter及其Convert的參數(shù)等信息.

  1. Text="{Binding Path=CurrencyID,Mode=TwoWay,Converter={StaticResource currencyValueConverter}}"  

  經(jīng)過(guò)以上步驟基本完成了AutoCompleteBox列增加.

  上述方法有以下問(wèn)題:

  1.步驟比較多

  2.為每個(gè)使用到AutoCompleteBox列的地方都要以上處理,重復(fù)工作較多

  3.為每個(gè)類似Key,Value的轉(zhuǎn)換都要寫個(gè)Converter類

  那么我們能否寫個(gè)類似DataGridTextColumn的DataGridAutoCompleteColumn類,通過(guò)簡(jiǎn)單的綁定就可以完成以上工作呢?答案肯定是可以的.

  下面讓我們來(lái)動(dòng)手實(shí)現(xiàn)這個(gè)DataGridAutoCompleteColumn吧!

  設(shè)計(jì)DataGridAutoCompleteColumn類面臨幾個(gè)問(wèn)題:

  1.為我們的DataGridAutoCompleteColumn選擇一個(gè)合適的基類,并重寫相應(yīng)的方法

  2.實(shí)現(xiàn)一個(gè)通用的轉(zhuǎn)換器,完成Key,Value的映射

  解決方法:

  對(duì)于第一個(gè)問(wèn)題我們選擇DataGridBoundColumn類做為基類,重寫GenerateElement,GenerateEditingElement,CancelCellEdit,PrepareCellForEdit等方法.

  對(duì)于第二個(gè)問(wèn)題我們指定ValueMemberPath,DisplayMemberPath,利用反射機(jī)制來(lái)實(shí)現(xiàn)這兩個(gè)字段間的映射即可。下面是我實(shí)現(xiàn)的代碼:

DataGridAutoCompleteColumn實(shí)現(xiàn)代碼:

public class DataGridAutoCompleteColumn : DataGridBoundColumn
     {
   public DataGridAutoCompleteColumn()
         {
     //this.DefaultStyleKey = typeof(DataGridAutoCompleteColumn);  
  //this._converter = new DataGridAutoCompleteColumnConverter(this);  
            
         }

   public override System.Windows.Data.Binding Binding
         {
             get
             {
                 return base.Binding;
             }
             set
             {
                 if (value != null)
                 {
  if (value.Converter == null)//如果沒(méi)指定轉(zhuǎn)換器,指定通用轉(zhuǎn)換器來(lái)轉(zhuǎn)
                     {
     value.Converter = new DataGridAutoCompleteColumnConverter();
                     }                    
                 }

                 base.Binding = value;
             }
         }

         private IValueConverter Converter
         {
             get 
             {
                 if (this.Binding != null)
                 {
                     return this.Binding.Converter;
                 }
                 return null;
             }
             //set { this._converter = value; }
         }

  protected override FrameworkElement GenerateElement

(DataGridCell cell, object dataItem)
         {
             //throw new NotImplementedException();
            
             TextBlock block = new TextBlock();
             block.Margin = new Thickness(4.0);
             block.VerticalAlignment = VerticalAlignment.Center;
            
             if ((this.Binding != null) || !DesignerProperties.IsInDesignTool)
             {
    block.SetBinding(TextBlock.TextProperty, this.Binding);
             }
             return block;

         }

  protected override FrameworkElement GenerateEditingElement

(DataGridCell cell, object dataItem)
         {
             AutoCompleteBox box = new AutoCompleteBox();
             box.VerticalAlignment = VerticalAlignment.Center;

   box.Background = new SolidColorBrush(Colors.Transparent);


  if ((this.Binding != null) || !DesignerProperties.IsInDesignTool)
             {
                 box.ItemsSource = this.ItemsSource;
   DataTemplate itemTemplate = this.ItemTemplate;
   if (itemTemplate == null  && !String.IsNullOrEmpty(this.DisplayMemberPath))
                 {
  string&nbsp;xaml =  "<DataTemplate xmlns=

\"//schemas.microsoft.com/winfx/2006/xaml/presentation\"> 
<TextBlock Text=\"{Binding Path=" +
      this.DisplayMemberPath +  "}\" /> </DataTemplate>";
    itemTemplate = (DataTemplate)XamlReader.Load(xaml);
                 }

                 box.ItemTemplate = itemTemplate;
                
                 if (!String.IsNullOrEmpty(DisplayMemberPath))
                 {
                     Binding valueBinding = new Binding(this.DisplayMemberPath);                   
                     box.ValueMemberBinding = valueBinding;
                 }
                 else if (!String.IsNullOrEmpty(ValueMemberPath))
                 {
   box.ValueMemberPath = this.ValueMemberPath;
                 }

     box.SetBinding(AutoCompleteBox.TextProperty, this.Binding);
                 //box.SetBinding(base.BindingTarget, this.Binding);
             }

             return box;            
         }

  protected override void CancelCellEdit

(FrameworkElement editingElement, object uneditedValue)
         {
             //base.CancelCellEdit(editingElement, uneditedValue);
             AutoCompleteBox box = editingElement as AutoCompleteBox;
             if (box != null)
             {
                 if (this.RequiredConverter)
                 {
            ;         box.Text&nbsp;= (string)this.Converter.Convert(uneditedValue, typeof(string), 

null, System.Globalization.CultureInfo.CurrentCulture);
  }
                 else if(uneditedValue != null)
   {
    box.Text = uneditedValue.ToString();
                 }
             }
         }

  protected ;override object PrepareCellForEdit

(FrameworkElement editingElement, RoutedEventArgs editingEventArgs)
         {
   AutoCompleteBox box = editingElement as AutoCompleteBox;
             if (box != null)
             {
                 return box.Text;               
             }
             else
             {                
                 return string.Empty;
             }
   //return base.PrepareCellForEdit(editingElement, editingEventArgs);
         }

         private bool RequiredConverter
         {
             get
             {
                 return !String.IsNullOrEmpty(this.ValueMemberPath)
                     && !String.IsNullOrEmpty(this.DisplayMemberPath);
             }
         }               

         #region AutoComplete

         public string ValueMemberPath
         {
             get { return GetValue(ValueMemberPathProperty) as string; }
             set { SetValue(ValueMemberPathProperty, value); }
         }

        ; // Using&nbsp;a DependencyProperty as the backing store for ValueMemberPath.  

This enables animation, styling, binding, etc...
  public static readonly DependencyProperty ValueMemberPathProperty =
  &nbsp;          DependencyProperty.Register( "ValueMemberPath", typeof(string), ;typeof(DataGridAutoCompleteColumn), 

new PropertyMetadata(null, OnMemberPathPropertyChanged));


         public string DisplayMemberPath
         {
             get { return GetValue(DisplayMemberPathProperty) as string; }
             set { SetValue(DisplayMemberPathProperty, value); }
         }

         // Using a DependencyProperty as the backing store for DisplayMemberPath. 

 This enables animation, styling, binding, etc...
         public static readonly DependencyProperty DisplayMemberPathProperty =
             DependencyProperty.Register( "DisplayMemberPath", typeof(string), typeof(DataGridAutoCompleteColumn), 

new PropertyMetadata(null, OnMemberPathPropertyChanged));

        
         public IEnumerable ItemsSource
         {
             get { return GetValue(ItemsSourceProperty) as IEnumerable; }
             set { SetValue(ItemsSourceProperty, value); }
         }

      &nbsp;  // Using a DependencyProperty as the backing store for ItemsSource.  

This enables animation, styling, binding, etc...
         public static readonly DependencyProperty ItemsSourceProperty =
             DependencyProperty.Register( "ItemsSource", typeof(IEnumerable),
  typeof(DataGridAutoCompleteColumn), ;new PropertyMetadata

(null, OnItemsSourcePropertyChanged));


         public DataTemplate ItemTemplate
         {
             get { return GetValue(ItemTemplateProperty) as DataTemplate; }
             set { SetValue(ItemTemplateProperty, value); }
         }

&nbsp;        // Using a DependencyProperty as the backing store for ItemTemplate.  

This enables animation, styling, binding, etc...
         public static readonly DependencyProperty ItemTemplateProperty =
  ;           DependencyProperty.Register( "ItemTemplate", typeof(DataTemplate), typeof(DataGridAutoCompleteColumn),

 new PropertyMetadata(null));

       &nbsp; private static void OnMemberPathPropertyChanged(DependencyObject d, 

DependencyPropertyChangedEventArgs e)
         {
  DataGridAutoCompleteColumn control = d as DataGridAutoCompleteColumn;
             if (control != null)
             {
                 control.OnMemberPathChanged();
             }
         }

        
         private void OnMemberPathChanged()
         {
             //set binding converter
         &nbsp;   DataGridAutoCompleteColumnConverter converter =

 this.Converter as DataGridAutoCompleteColumnConverter;
             if (converter != null)
             {
                 converter.ValueMember = this.ValueMemberPath;
                 converter.DisplayMember = this.DisplayMemberPath;   
             }
         }

         private static&nbsp;void OnItemsSourcePropertyChanged

(DependencyObject d, DependencyPropertyChangedEventArgs e)
         {
   DataGridAutoCompleteColumn control = d as DataGridAutoCompleteColumn;
             if (control != null)
             {
                 control.OnItemsSourceChanged();
             }
         }

         private void OnItemsSourceChanged()
         {
             IValueConverter converter = this.Converter;//this._converter as DataGridAutoCompleteColumnConverter;
  if (converter != null  && converter is DataGridAutoCompleteColumnConverter)
             {
  ((DataGridAutoCompleteColumnConverter)converter).ItemsSource = 

this.ItemsSource;
             }
         }

         #endregion                     
     }

DataGridAutoCompleteColumnConverter類實(shí)現(xiàn)代碼:

   class DataGridAutoCompleteColumnConverter : IValueConverter
     {
         private IEnumerable _itemsSource;
         private PropertyInfo _valuePropertyInfo;
         private PropertyInfo _displayPropertyInfo;
         private Type _elementType;
         private bool _initialized = false;

         public string DisplayMember { get; set; }

         public string ValueMember { get; set; }

         public IEnumerable ItemsSource
         {
             get { return this._itemsSource; }
             set
             {
                 this._itemsSource = value;
                 _initialized = false;
             }
         }

         private void Init()
         {
             if (_initialized) return;

    if (this.ItemsSource != null  && !String.IsNullOrEmpty(this.DisplayMember)
  && !String.IsNullOrEmpty(this.ValueMember))
             {
    IEnumerator enumrator = this.ItemsSource.GetEnumerator();
  enumrator.MoveNext();
                 object current = enumrator.Current;
                 Type type = current.GetType();
                 if (current != null)
     if (!String.IsNullOrEmpty(this.ValueMember))
     {
                         _valuePropertyInfo = type.GetProperty(this.ValueMember);
                     }
                     if (!String.IsNullOrEmpty(this.DisplayMember))
                     {
                         _displayPropertyInfo = type.GetProperty(this.DisplayMember);
                     }
                     _elementType = type;
                     _initialized = true;
                 }
                
             }
             else
             {
   this._valuePropertyInfo = null;
                 this._displayPropertyInfo = null;
             }
         }

     #region IValueConverter Members

   &nbsp;     public object Convert(object value, Type targetType, object parameter,

 System.Globalization.CultureInfo culture)
         {
     if (String.IsNullOrEmpty(this.DisplayMember) 

&& String.IsNullOrEmpty(this.ValueMember))
                 return value;
             this.Init();

             if (this._displayPropertyInfo == null) return value;

             if (targetType == this._displayPropertyInfo.PropertyType)
             {
                 if (ItemsSource == null)
                     return value;

                 if (value.GetType() == this._elementType)
                 {
                     return this._displayPropertyInfo.GetValue(value, null);
                 }

                 object item = null;
                 foreach (object o in this.ItemsSource)
                 {
                     if (value.Equals(this._valuePropertyInfo.GetValue(o, null)))
                     {
                         item = o;
                         break;
                     }
                 }

                 if (item != null)
                 {
                     return this._displayPropertyInfo.GetValue(item, null);
                 }
             }
             return value;
         }

  public object ConvertBack(object value, Type targetType, object parameter, 

System.Globalization.CultureInfo culture)
         {
             this.Init();

             if(value == null)return value;

             if (this._displayPropertyInfo != null)
             {
                 object item = null;
                 foreach (object o in this.ItemsSource)
                 {
  if (value.Equals(this._displayPropertyInfo.GetValue(o, null)))
                     {
                         item = o;
                         break;
                     }
                 }

   if (item != null  && this._valuePropertyInfo != null)
                 {
                     return this._valuePropertyInfo.GetValue(item, null);
                 }
                 return item;
             }
   else if(this._valuePropertyInfo != null  && value.GetType() == this._elementType)           
             {
    return this._valuePropertyInfo.GetValue(value, null);
             }
             else
             {
                 if ((targetType != null)  && targetType.IsClass)
                 {
                     string str = value as string;
                     if (str == string.Empty)
                     {
                         return null;
                     }
                 }
                 return value;
             }
         }

         #endregion
     }

  到此我們的DataGridAutoCompleteColumn類基本開發(fā)完成.

  使用時(shí)我們只需要以下聲明就可以:

<local:DataGridAutoCompleteColumn x:Name="currencyColumn"   
     Binding="{Binding Path=CurrencyID}"   
   ItemsSource= "{Binding Source=

{StaticResource currencyDomainDataSource},Path=Data}"   
  ValueMemberPath= "ID" DisplayMemberPath="Name"

Header="Name&quot; Width="SizeToHeader"/>

  當(dāng)然在Resource里面還是要定義ItemsSource的數(shù)據(jù)源的。 


標(biāo)簽:

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

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

為你推薦

掃碼咨詢


添加微信 立即咨詢

電話咨詢

客服熱線
023-68661681

TOP
91人妻人人爽人人狠狠 | a男人的天堂久久a毛片 | 日本激情午夜在线电影观看 | 亚洲日韩一页精品发布 | 国产96在线视频播放网站 | 精品一区二区三区四区在线 | 亚洲av成人中文无码专区 | 99精品国产在热久久无毒 | 亚洲国产成人手机在线观看 | 国内精品久久久电影影院 | 久久99久久精品久久久久久 | 国产精品久久久久久久午夜 | 亚洲第一页在线视频 | 国产日韩欧美一区 | 成人无码免费一区二区三区 | 国产午夜福利精品久久2025 | 国产在线观看精品 | 综合色五月久久激情婷 | 自拍偷自拍亚洲精品被多人伦好爽 | 国产gay高中生小鲜肉屁股 | 亚洲国产精品成人va在线观看 | 97伦理免费不卡在线观看 | 91在线精品无码秘入口九色平台对比 | 欧美日韩精品视频一区二区在线 | а√中文在线资源 | www在线观看视频 | 99鲁丝片一区二区三区免费入 | 国产精品无码无 | 无码精品亚洲第1页 | 国产精品白丝无码视频一区 | 久久99精品国产是什么意思 | 精品国产自在久久现线拍 | 久久www香| 日韩一品在线播放视频一品免费 | 国产成a人片在线观看视频下载 | 国产精品国三级国产aⅴ | 国产精品午夜国产小视频 | 国产日产高清欧美一区二区三区 | 国产成人精品一区二三区 | 国产精品巨作av无遮挡 | 成年站免费网站看v片在线 成欧美亚洲人一区二区三区免费 | 日本高清一区二区在线 | 另类图片视频 | 人人爽天天碰天天躁夜夜躁 | 97久久综合区小说区图片区 | 精品国产精品国产偷麻豆 | 伊人天堂av无码av日韩av | 无码av片在线观看免费 | 精品视频一区二区 | 午夜爱爱免费视频体验区 | 亚洲国产欧洲综合99 | 韩国午夜理伦 | 91精产品自偷自偷综合下 | 91国内产香蕉v4.4.9最新版 | 亚洲日本三级乱伦 | 亚洲а∨天堂久久精品 | 国产一区二区精品久久岳 | 日韩潮喷视频在线播放 | 国产欧美一区二区综合 | 亚洲av不卡无码国产粉色 | 精品日韩一区二区三区 | 中文字幕爆乳巨爆乳 | 亚洲日韩国产av无码无码精品 | 国产麻豆天美果冻无码视频 | 中文字幕亚洲综合久久 | 国产成人精品 | 精品国产一区二区三区无码 | 国产最变态调教视频 | 亚洲资源站中文在线丝袜 | 成人黄色视频网站 | 国产成人午夜高潮毛片刘涛 | 国精产品一品二品国精品69xx | 丰满少妇被猛烈进入高清app | 精品人妻一区二区三区浪潮在线 | 国产一区二区三区福利姬在线观看 | 国产91精品在线 | 在线好吊色视频 | 国产精品国产香蕉在线观看网 | 极品少妇小泬50pthepon | 亚洲a∨毛片无码专区国产乱码 | 中文字幕av王| 91日韩就爱高清视频 | 午夜网站在线观看 | 依人网络在线综合视 | 精品国产精品国自产观看 | 日本高清一区二区三区 | 99精品国产热久久婷婷天堂 | 97蜜桃网站 | 99999久久久久久亚洲 | 69精品人人人人人人人人人 | 无码一级毛片免费 | 中文字幕亚洲乱码高清 | 人妻日韩精品中文字幕 | 国产女主播白浆在线观看 | 中文字幕无码免费不卡视频 | 99久久婷婷国产综合精品电影 | 狠狠综合久久av一区二区 | 亚洲日韩精 | 97久久久超国产精品 | 嫩草91短视频ap | 91在线无精精品秘?入口 | 国产精品不卡一区二区三区四区 | 无套内射极品少妇chinese | 人妻少妇一区二区三区 | 91福利国产在线观看 | 亚洲av无码专区在线播放中文 | 果冻传媒在线观看九一制片厂 | 少妇被猛烈进 | 国产黄色大片 | 中文字幕精品一区二 | 国产精选在线观看播放 | 精品欧美国产一区二区三区不卡 | 国产av一区二区三区传媒 | 91在线无码精品秘国产 | 麻豆精品一区二区视频在线 | 国产人成无码视频在线观看 | 婷婷婷国产在线视频 | 亚洲欧美高清在线精品一区二区 | 国产男奴sm口舌奴视频 | 午夜福利视频免费看床戏激情 | 无人区一码卡二卡三乱码 | 国产精品蜜桃在线观看 | 国产一区二区三区在线免费 | 超碰香蕉亚洲香蕉亚洲 | 性欧美长视频免费观看不卡 | 国产亚洲精久久久久久无码 | 国产精品自在拍一区二区不卡 | 91香蕉国产线在线观看免费网友评价 | 人人爽人人澡人人人人妻 | 国产成人精品亚洲av无人区一区 | 欧美一区二区三区播放 | 99热这里是精品与其他应用相比 | 一区二区三区久久久av | 亚洲v天堂v手机在线观看 | 丰满岳乱妇在线观看视频国产 | 精品粉嫩 | 综合激情五月婷婷 | 国产亚洲成av片在线观看 | 护士长在办公室躁bd剧情堪比大片 | 91精品国产自产91精品蜜臀 | 中文字幕不卡免费高清视频 | a片在线| 韩国无码无遮挡在线观看不卡 | 人人草人人爱 | 国产精品美女乱子伦高潮 | 老熟女高潮一区二区三区 | 区二区三区香蕉精 | 人妻少妇精品视频二区 | 亚洲91| 无码国产精品一区二区vr | 欧美成人精品第一区 | 白丝制服被啪到喷水视频 | 国产精品视频一区二区噜噜 | 午夜成人理论福利片 | 91在线看| 69视频app官方最新版下载 | 国产永久福剩在线播放 | 国产日韩精品欧美一区 | 欧美视频一区二区三区在线观 | 精品一卡2卡三卡4卡免费视频 | 国产无码网 | 91福利一区二区三区 | 日本免费人成在线观看网站 | 亚洲综合久久久久久888 | 亚洲精品无码久久久久av麻豆 | 国产老色批免费视 | 国产成人精?综合久久久 | 国产欧美日韩中文字幕第一页 | 亚洲麻豆?v无码成人片在线观看 | 91在线国语自产拍在线观看 | 精品成人免费国产片 | 99久久成人国产精品免费 | 日韩一区二区久久久久久久久 | 国产精品免费aⅴ片在线观看 | 欧美日韩综合 | 日韩欧美1区 | 久久99精品久久久久国产 | 亚洲欧美日韩漫画 | 亚洲精品美女久久久久9999 | 91亚洲中文字幕在线播放 | 91香蕉成人免费网站 | 国产精品成人久久久久久久 | 日韩人妻无码精品 | 国人国产免费观看av在线 | 亚洲精品久久久久久久久av | 日日爱夜夜爽 | 91福利导航| 亚洲午夜日 | 成人老司机深夜福利久久 | 国产性生交xxxxx免费五月天色 | 成人老司机深夜福利久久 | 国产精品一区二区三区四区五区 | 精品综合久久久久久97超人 | 日韩免费a级二区三区 | 亚洲avav天堂av在线网毛片 | 精品少妇人妻av免费久久洗澡 | 97精品伊人久久久大香线焦 | 亚洲av一本岛在线播放 | 亚洲国产精品và在线看 | 无遮挡免费| 日韩欧美视频免费一区二区三区 | 亚洲免费福利精品日韩视频 | av天堂午夜精品一区 | 国产不卡精品一区二区三区 | av看片 | 国产一区二区三区综合网 | 国产中文字幕免费不卡 | 成人免费看片又大又黄 | 成年免费a级毛片免费看 | 蜜臀av色欲a片精品一区 | 国产v在线在线观看视频免费 | 丝袜中出制服人妻美腿 | 亚洲第一区欧美国产不卡综合 | 日韩精品国产自在久久现线拍 | 午夜视频在线观看免费完 | 少妇高潮流白浆在线观看 | 少妇又紧又色又爽又刺激视频 | 午夜hhh视频| 日韩日韩日韩日韩日韩 | 国偷自拍视频在线观看 | 国产免费又黄又爽又色毛 | 91在线无精精品秘一区二区 | 亚洲字幕成人中文在线观看 | 久久成人国产精品免费软件 | 亚洲国产精品99久久久久久 | 国产免费高潮流白 | 亚洲国产精品成人综合 | 亚洲av无码天堂一区二区三区 | 午夜视频免费在线观看 | 欧美日韩精品成人 | 国产精品亚洲 | 在线一区二区不卡 | 日本a级精品一区二区三区 日本a片把舌头伸进 | 亚洲日韩av无码中文 | 婷婷在线视频 | 国产v高清v| av片在线观看 | 日韩av不卡在线观看一区 | 国产三级精品三级在线观看 | 国产在线拍 | 91国内外精品自在线播放 | 在线观看视频中文字幕三区 | 少妇精品无码一 | 国产精品99精品无码视亚 | 国产av无码专区亚洲av中文 | 不卡网国产精品一区二 | 亚洲av专区无码观看精品天堂 | 国产人妻人伦精品九色威尼斯商人 | 国产美女在线精品免费观看 | 91视频免费观看 | 亚洲欧美精品一中文字幕 | 国产精品自产拍在线网站 | 精品在线看 | 深夜二个少妇精油按摩到高潮 | 97精品国产97久久久久 | 国产欧美中文字幕 | 成人av色一区二区三区 | 人妻无码一区二区视频 | 国产精品99精品久久免费 | 国产美女自慰在线观看 | 日本国产日韩 | 91欧洲在线视精品在亚洲 | 国产成人a码男人的天堂 | 国产二三区| 国产盗摄偷窥在线观看 | 国产成人久久av免费看 | 国产性自爱拍偷在在线播放 | 妇女精品一二区 | 久久99欧| 国产亚洲综合性久久久影院 | 国产精品欧美日韩区二区 | www.一区二| 97制片厂爱豆传媒视频在线 | 麻豆精品无人区码一二三 | 少妇高潮大叫好爽 | 日本精品99一区二区不卡 | 精品少妇人妻av久久免费 | 国内久久综合无码精品 | 国产又粗又大硬免费视频 | 国产高潮呻吟 | 国产91丝袜在线精品 | 丰满人妻av无码一区二区三区 | 国产免费看黄的私人影院 | 高清无码电影免费专区 | 亚洲线精品一区二区三区 | 国产精品99久久99久久久动漫 | 午夜在线观看免费线无码视频 | 精品无人区一区二区三区在线 | 亚洲成av人网站在线播放 | 国产日韩欧美亚洲精品95 | 国产在线观看精品91 | 无码av片在线观看免费 | 国模冰莲自慰肥美胞极品人体图 | 97超频在线视频免费观看 | 99久久精品国产免费看 | 爆乳邻居肉欲中文字 | 欧美日韩一区二区 | 欧美日韩综合在线视频免费看 | 成全视频在线观看 | 91九色在线观看 | 91精品最新国内在线播放 | 日本人视频国产一区二区三区 | 98精品国产高清在线看入口 | 成人妇女免费播放久久久 | 无码av专区| 白浆免费视频国产精品视频 | 午夜夫妻试看120国产 | 成年免费视频黄网站在线观看 | 亚洲av无码影视久久乐第一区 | 日韩欧美国精品一区二区三区 | 91麻豆精产国品一二三系列产品测评 | 在线视频免费观看www动漫 | 欧美性爱专区 | 亚洲va无码专区国产乱码 | 成人在线高清 | 最新中文字幕日本 | 亚洲av永久精品毛片天堂 | 高跟黑色丝袜国产91在线 | 三级久久黄 | 九七电影院97网手机版不用下载 | 999国内精品永久免费视频 | 无码一区国产欧美视频 | 午夜神器成在线人成在线人免 | 亚洲精品91 | 亚洲国产日韩一级精品视频网站 | 91香蕉短视频超碰97在线人 | 日韩中文人妻无码不卡 | 亚洲中文字幕在线第六区 | 丰满熟妇被猛烈进入高清片 | 欧美日韩一区二区三区在线播放 | 成人无码国产一区二区 | 国产精品亚洲欧美在线播放 | 激情国产日韩在线观看 | 国产裸拍裸体视频在线观看 | 91男女无遮挡猛进猛出免费午夜久久 | 国产黄色视频网站 | 国产成人拍国产亚洲精品稀缺 | 国产做无码视频在线观看浪潮 | 国产精品巨作av无遮挡 | 国产乱码一区二区三区 | 激情视频国产精品 | 亚洲av无码一区二区三区电影 | 国自产精品手机在线观看 | 精品三级| 国产精品视频 | 中文精品视频一 | 国产美女爽到喷出水来视频 | 97色永久全国免费视频 | 亚洲国产精品无码一区二区 | 亚洲精品第一页 | 成人午夜精品一级毛片 | 97视频官网版下载 | 麻豆久久 | 亚洲一区二区三区四区五区六区 | 国产精品区在线播放vr | 激情亚洲 | 无人区乱码一线忘忧草 | 成人a毛片免费全部播放 | 99久久人妻精品无码二区 | 国产精品66福利在线观看 | 二区三区爱妻 | 91精品导航 | 91极品视频| 午夜日本电影大全免费播放 | 国产三级在线观看播放视频 | 99久久国产综合精品网成人影院电影 | 91狠狠色综合久久久夜色撩人 | 日韩精品无码一区二区中文字幕 | 欧美日韩精 | 亚洲成aⅴ人片在线影院八 亚洲成av | 无码任你躁久久久久久老妇 | 中日韩一区二区三区 | 国产v综合v亚洲欧美久久 | 国产一区二区精品尤物 | 无码国产69精品久久久孕妇 | 国产综合成人久久大片91 | 国产伦理片在线播放av一区 | 人人妻人人澡人人爽欧美一区双 | 国产91白丝在线播放 | 国产三级电影在线观看 | 人妻av区波多野结衣 | 日韩高清国产一区在线 | 日本免费人成视频在线观看 | 亚洲国产一区二区在线观看 | 性推油按摩av无码专区 | h无码动漫在线观看不卡 | 日本动漫在中国大陆传播分析 | 国产成人一区二区三区影 | 韩国高清一区二区午夜无码 | 成人午夜精品视频在线 | 在线看免费观看av深夜影院 | 亚洲日韩一区在线观看 | 成人免费午夜无码视频 | 69国产成人精 | 久久99精品久久久久久无毒不 | 91亚洲福利 | 亚洲日本韩国中文 | 日韩激情一级毛片久久久久 | 国内精品久久久电影影院 | 精品国产成人亚洲午夜福利 | 一区二区三区国产精品保安 | 国产午夜福利av在线机视频 | 午夜精品一区二区三区av | 91综合久久 | av片在 | 亚洲五月六月丁香激情综合 | 波多野结衣乳巨码无在线观看 | 亚洲精品高清国产一线久久 | 91福利国产在线观看 | 国产一在线精品一区在线观看 | 亚洲精品影院在线观看 | 国产成人精品无码免费视频 | 极品私人尤物在线精品视频 | 91久久另 | 91精品国产色综合久 | 国产v片在线观看精品亚洲 国产v日本v欧美v一二三四区 | 亚洲aⅴ天堂av在线电影猫咪 | 欧美三级午夜理伦三级中文字幕 | 亚洲欧美日韩一本无线码专区 | 国产爆乳尤妮丝无码视频在线 | 国产高清专区 | 午夜av在线播放不卡 | 国产区精品高清在线观看 | 内射一区二区精品视频在线观 | 无码国产偷倩在线播 | 国产福利精 | 国产色青青视频在线观看撒 | 中文字幕亚洲乱码熟女一区二区 | 久久av无码精品人妻系列果冻传 | 九九精品99久久久香蕉 | 精品久久人人爽人人玩人人妻 | 极品无码一区二区三区 | 日本高清无卡 | 无码三级香港经典三级在线视频 | 91成人看片 | 97蜜桃网站 | 成人夜晚看片如何选择合适的影片 | 午夜十二点 | 中文字幕精品久久久久人妻红杏1 | 精品国产无码av91久久精品国产 | 国精品无码一 | 精品国产91乱码一区 | av无码精品一区二区三区四区 | 国产系列丝袜熟女精品视频 | 欧美性b| 国产精品永久久久久久久久久 | 人妻无码αv中文字幕久久 人妻无码不卡在线看 | 国产一本视频在线播放 | 国产亚洲日韩在线a不卡 | 一区二区三区欧美日韩 | 91精品丝袜国产在线一区 | 国产精品欧美视频另类专区 | 成人性生交大片免费看r男欢女爱 | 丰满少妇午夜寂寞影院 | 无码国产激情在线观看 | 99国产综合亚洲精品 | a级毛片内射免费视频 | 日韩国产欧美亚洲一区不 | 成全视频在线 | 毛片免费视频在线观看 | 国产爆乳无码视频在线观 | 国产剧情av在线观看 | 亚洲av综合a | 麻豆三级 | 最新欧美日韩在线 | md豆传媒一二三区入口 | 国产性自爱拍偷在在线播放 | 91在线亚洲综合在线 | 国产aⅴ精品一区二 | 国产永久免| 日本a级按摩 | 日韩一品在线播放视频一品免费 | 国产乱子伦精品免费视频 | 成人a级毛片免费观看av网站 | 成人在线观看午夜 | 天美传媒在线观看果冻传媒 | 国产亚洲欧美一区二区 | 97亚洲熟妇自 | 波多野结衣在线电影天堂 | 91麻豆精品国产自产在线观看一区 | 国产良妇出轨视频在线观看 | 国产91在线视频 | 国产一级a爱片在线观看视频 | 91精品自在线在线视频 | 成人香蕉视频 | 色一情一乱一交一二三区 | 内射一区二区精品视频在线观 | 性推油按摩av无码专区 | 高清无码中文字 | 亚洲欧美成人久久一区 | 欧美日韩国产一区二区三区精 | 国产精品老女人精品视频 | 国产xxx在线 | 日韩欧美电影在线 | 国产亚洲精品yxsp | 亚洲日韩一区二区三区 | 丰满人妻跪趴 | 岛国一区二区在线观看蜜 | 人妻丰满精品一区二区a片 人妻丰满熟av无码区hd | 精品日本一区二区三区在线观看 | 亚洲成人亲热国产精品 | 无码性午夜视频在线观看 | 亚洲欧美国产另类首页 | 亚洲国产精品综合久久网络 | 极品国产一区二区三 | 午夜视频在线观看一区二区 | 国产福利在线视频 | 日韩一区二区在线 | 日日久久一区二区三区 | 欧美一级久久久 | 91视频免费版安卓版下载v1.0 | 蜜月国产日韩久久久久精品 | 欧美级在线现免费观看不卡 | 91精品国产aⅴ一区二区 | 欧美嫩草影院 | 99视频精品国产在线视频 | 欧美一区 | 亚洲精品电影网 | 中文字幕视频二区人妻在线 | 日韩人妻无码一区二区三区久久99 | 少妇爆乳无码av无 | 香蕉视频在线观看福利国产 | 亚洲v无码精品色午夜蜜桃 亚洲v无码专区日韩乱码不卡 | 欧美最猛黑人xxxxx猛交 | 99久久国产主播综合精品 | 丰满气质白嫩少妇呻吟高潮 | 久久r视频免精品在 | 在线精品无码不不卡 | 精品久久久久久久久午夜福利 | 国产一级一级一级国产片 | 欧美日韩精品 | 精品无码一区二区三区在线播放 | 亚洲精品第一国产综合麻豆 | 国产精品亚洲аv无码播放 国产精品亚洲成在人线 | 日本亚洲色大成网站www | 国产91福利在线精 | 国产aⅴ精品一区二区三区久久 | 国产91精选在线观看麻豆 | 国产成人综合在线 | 亚洲资源站中文在线丝袜 | 午夜影视 | 丰满人妻中文字幕无码 | 精品第一国产综合精品aⅴ完整版 | 二区在线播放 | 日韩在线视频中文字幕 | 亚洲av无码成人精品区在线观 | 国外自产拍无码精品视频在线观 | 无码性午夜视频在线观看 | 成人午夜啪啪免费网站 | 亚洲v欧美v日韩v国产v | 丰满人妻av无码一区二区三区 | 无码偷窥清纯综合图区 | a级毛片免费视频无码 | 久久97人人 | 精品人妻潮喷久久久又裸又黄 | 99久久综合狠狠综合久久aⅴ | 亚洲成国产人片在线观看 | 国产成人激烈叫床声视频对白 | 麻豆精品久久精品色综合 | 亚洲一区二区三区亚洲 | 色视频在线观看 | 精品成人大胸美女视频在线播放 | 中文亚洲av片在线观看不卡 | 国产黄色视频免费在线观看 | 国产在线高潮流 | av中文字幕精品一区二区久久久 | 色综合天天综合网 | 亚洲电影一区二区三区 | 在线播放无码高潮的视频 | 99尹人香蕉国产免费天天在线 | 国产久爱青草视频在线观看 | 国产高清一区二区三区视频 | 久久99爱视频 | av播放在线观看播放 | 国产av一区二区三区最新精品 | 国产清纯91天堂在线观看 | 精品国产九色porny | 丰满人妻一区二区三区免费视频 | 日本无码视频在线观看 | 99国产精品免费观看 | 亚洲av中文无码乱人伦在线播放 | 91在线品视觉盛宴国产 | 久久99国产综合精品女同 | 亚洲精品无码一区二区三天美 | 久久66热人妻偷产精品9 | 亚洲精品无 | 99久久久久成人国产免费 | av天堂电影网 | 亚洲伊人精品国产午夜欧美 | 亚洲av日韩aⅴ永久无码 | 精品国产一区二 | 波多野结衣hd系列在线播放 | 国产精品视频一区二区538 | 另类重口100页在线播放 | 欧洲肉欲k8播放毛片护士 | 91久久亚洲亚洲综合精品 | 日韩一区二区免费 | 国产精品三级av及在线观看 | 国产熟妇无码a片aaa毛片视频 | 99久久99久久精品国产片果冻 | 亚洲国产天堂αv日本国产 亚洲国产天堂久久综合 | 亚洲精品无码久久久久久 | 日一卡2卡3卡4卡新区乱码久久 | 99久久99精品免视看动漫 | 欧美日韩一区二区三区在线观看 | 国产精品无码一区二区三 | 免费无码ⅴ视频网 | 精品无人区乱码1区2区3区在线 | 精品久久aⅴ人妻中文字幕 精品久久av电影 | 国产成人精品亚洲第一 | 欧美性猛交xxxx富婆 | 亚洲a∨一区二区三区18 | 国产精品va | 人妻少妇久久中文字幕一区二区+ | 国内精品久久影视免费 | 日本中文字幕在线观看 | 中文字幕无码 | 毛片在线观看视频 | 99热久久这里只精品国产www | 亚洲日韩av无码不卡一区二区三区 | 麻豆国产91在线播放 | 午夜无码片在线观看线 | 国产成人精品高清在线观看99 | 国产一区亚洲一区 | 国产亚洲av片天天在线观看人 | 亚洲国产变态另类天堂 | 91福利国产在线观看网站 | 成年日本h片免费网站 | 久久国产爆乳无码视频在线观看 | 亚洲欧美成人精 | 中文字幕aav | 蜜臀91精品国产免费观看 | 日本亚洲欧洲免费无线码 | 国产ts系列紫苑 | 欧美日韩精品视频一区二区在线观看 | 丰满人妻跪趴高撅肥臀最 | 国产精品扒开腿做爽爽爽视频 | 欧美97色伦欧美一区二区日韩 | 亚洲av乱码久久精品蜜桃 | 怡春院怡红院国产a∨ | 国产亚洲欧美一区二区 | 福利视频| 九九热精品在线视频观看 | 99久久精品国产免费看不卡 | 欧美日韩亚洲综合一区二区三区激 | 亚洲中文字幕网资源站 | 欧美成人午夜精品久久久 | 精品一区二区三区在线观看 | 东京热无码av一区二区 | 精品人妻av无码一区二区三区 | 免费一级做a爰片久久毛片潮 | 成人看片| 精品爆乳一区二区三区无码av | 国产一区二区三区四区三区 | 国产精品宾馆 | 99久久精品国产免费看不卡 | 成人特级毛片www免费版 | 国产成人精品一区二区不卡 | 东京无码熟妇人妻av在线网址 | 无码国产精品一区二区免费式芒果 | 91在线无码精品社区 | 午夜成人app免费观看 | 天天看片亚洲欧美国产 | 国内在线 | 日本不卡一区二区 | 成人在线永久 | 国产精彩视频在线观看免费蜜芽 | 国产在线精品一区二区三区精品 | 亚洲国产成人高清片在线观看 | 日韩精品免费无码一区二区 | 99久久亚洲综合精品成人网 | 少妇免费三级在线观看 | 91精品国产综合久久香蕉 | 99热门精品一区二区三区无码 | 国产观看免费在线久 | 黄色免费网址在线观看 | 亚洲成色www久久网站 | 无码人妻精品一区二区三区夜夜嗨 | 欧洲美熟女乱又伦免费视频 | 91亚洲自偷手机 | bt天堂www中文在线资源 | 精品亚洲av无码综合网 | 亚洲av成人综合网 | 亚洲综合无码精品一区二区三区 | 国产肥熟女视频一区二区 | 亚洲国产av无码精品果冻传媒 | 天天插狠狠干 | 波多野结衣高潮颠抖不停 | 熟妇熟女乱妇乱女网站 | 香蕉久久夜色精品国产 | 精品国产无码 | 国产亚洲成给综合 | 国产一区二区 | 精品国产亚洲av麻豆狂野 | 精品人无 | 欧美亚洲国产午夜看片 | 无人视频免费观看免费视频 | 国产成人精品午夜二三区 | 91男女免费福利 | 国产精品天天看 | 在线观看人成免费视频 | 午夜影院0606免费 | 国内精品久久影视免费 | 国产涩涩视频在 | 国产精品一区二区手机看片 | 亚洲精品久久久久久一区二区 | 人妻夜夜爽爽88888视频 | 91在线播放免 | 99re免费视频国产在线播放 | 国产成人92精品午夜福利 | 亚洲无码高清福利久久 | 亚洲av成人中文无码专区 | 亚洲日本一区二区一本一道 | 最新综合精品亚洲网址 | 中文无码在线观看可乐视频 | 十八禁啪h亚洲av羞羞网站 | 日本一区二区三 | 亚洲精品国产综合一线久久 | 另娄专区欧美制服在线亚洲欧 | 亚洲欧美一区二区三区蜜芽 | 亚洲欧美日本国产一区二区三区 | 国产日韩欧美一区二区综合 | 无码精品福利一区二区三区 | 午夜视频免费观看 | 激情综合亚洲九月色 | 91精品国自产在线偷拍蜜桃 | 高潮国产精品一区二区喷水 | 国产一区二区三区成人欧美日韩在 | 东京热之中文字幕 | 日韩欧美一区二区高清完整 | 国产成人精品永久免费视频 | 中文字幕精品 | 国产免费无码av片在线观看不卡 | 人妻无码aⅴ中文字幕系列 人妻无码αv中文字幕久久 | 国产精品无码2025在线观看 | 午夜专区三级无码 | 亚洲国产精久久久久久久 | 国产精品无遮挡永久视频 | 丰满熟女人妻一区二区三 | 91久久无码99精品高潮久 | 欧美日韩国产精品 | 日日噜噜噜夜夜爽爽狠狠 | 九色综合狠狠综合久久 | 无码av专区 | 亚洲午夜精品aaa级久久久久 | 亚洲欧美日韩精 | 国产片91 | 国产精品嫩草影院在线 | 伊人伊成久久人综合网 | 美女18禁黄无遮挡网站 | 精品国产v一区二区三区 | 无套内内射视频网站 | 在线看片免费人成视频手机 | 国产av无码专区亚洲av麻豆 | 国产成人福利视频在线观看 | 神马午夜福利我不卡手机电影 | 精品免费国产一区二区三区 | av片在| 国产午夜福利精品一区二区三区 | 精品国产av | 中文字幕av专区无码不卡久久 | 丝袜美腿诱惑亚洲一区二区 | 91人妻人人澡人人爽人人精品乱 | 亚洲午夜精品久 | 在线观看的黄色网 | 国产精品乱码久久久久久小说 | 国产精品美女久久久网站动漫 | 中文字幕久久熟 | 国产乱码精品一区二区三区四川 | 亚洲国人久久精品 | 国内一本到不卡在线观看 | 中文字幕在线精品乱码高 | 亚洲日韩乱码中文字幕 | 99精品视频久久精 | a级久久久久久久久精 | 在线精品无码不不卡 | 97人妻免费在线视频中文 | 亚洲精品高清国产一久久 | 少妇极品丰满人妻无码视频 | 国产成人高清亚洲一区 | 日韩成人精品二区 | 精品蜜臀国产aⅴ一区二区三区 | 国产精品亚洲片夜色在线 | 精品亚洲av无码综合网 | 国产熟女一区二区三区五月婷 | www.黄色网址 | 国产aaaaa毛片高清视频 | 一区二区美女啪啪啪 | 激情欧美吞精口爆一区二 | 麻豆精品秘国产传媒mv | 91极品尤物91禁国产在线播放 | 久久超碰97人人做人人爱 | 99精品一区二区三区免费视频 | 毛茸茸性xxxx毛茸茸毛茸茸 | 91亚洲自偷在线观看 | 国产āv无码专区亚洲āv桃花庵 | 91久久亚洲精品影院 | 91免费无码国产在线观看i | 亚洲av成人中文在线观看 |