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

金喜正规买球

Silverlight DataGrid中增加AutoCompleteBox列的方法

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

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

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

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

  1.在Resource中定義AutoCompleteBox的ItemTemplate,定義下拉列表中的每一項的顯示方式及其內容.

<data:DataGrid.Resources>  

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

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

</DataTemplate>  

</data:DataGrid.Resources>  

  2.定義AutoCompleteBox的數據源

<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.如果需要,實現轉換器類,實現IValueConverter接口,binding表達式中指定轉換器

  在上面例子中數據源的CurrencyID對應Currency的ID字段,用戶輸入時輸入Currency的Name字段,因此需要ID和Name之間進行轉換.

 public class CurrencyValueConverter : IValueConverter
     {

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

object parameter, System.Globalization.CultureInfo culture)
         {
             //這里實現轉換成Name
             return value;            
         }

  public object ConvertBack(object value, Type targetType, 

object parameter, System.Globalization.CultureInfo culture)
         {
             //這里實現從Name轉換成ID
             return value;
         }

         #endregion

  4.在Resouces中聲明Converter

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

  5.修改binding語句指定Converter及其Convert的參數等信息.

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

  經過以上步驟基本完成了AutoCompleteBox列增加.

  上述方法有以下問題:

  1.步驟比較多

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

  3.為每個類似Key,Value的轉換都要寫個Converter類

  那么我們能否寫個類似DataGridTextColumn的DataGridAutoCompleteColumn類,通過簡單的綁定就可以完成以上工作呢?答案肯定是可以的.

  下面讓我們來動手實現這個DataGridAutoCompleteColumn吧!

  設計DataGridAutoCompleteColumn類面臨幾個問題:

  1.為我們的DataGridAutoCompleteColumn選擇一個合適的基類,并重寫相應的方法

  2.實現一個通用的轉換器,完成Key,Value的映射

  解決方法:

  對于第一個問題我們選擇DataGridBoundColumn類做為基類,重寫GenerateElement,GenerateEditingElement,CancelCellEdit,PrepareCellForEdit等方法.

  對于第二個問題我們指定ValueMemberPath,DisplayMemberPath,利用反射機制來實現這兩個字段間的映射即可。下面是我實現的代碼:

DataGridAutoCompleteColumn實現代碼:

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)//如果沒指定轉換器,指定通用轉換器來轉
                     {
     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類實現代碼:

   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類基本開發完成.

  使用時我們只需要以下聲明就可以:

<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"/>

  當然在Resource里面還是要定義ItemsSource的數據源的。 


標簽:

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

文章轉載自:網絡轉載

為你推薦

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


添加微信 立即咨詢

電話咨詢

客服熱線
023-68661681

TOP
日本午夜大片a在线观看 | 三级中国免费的 | 青草视频在线观看完整版 | 天天爱天天做天天干 | 国产无人区一卡2卡三卡4卡仙 | 男男体育生乱yin高H肉汁 | 青草影院内射中出高潮 | 久久99精品国产99久久 | 中文字幕2021年 | 国产精品长腿丝袜第一页 | 91制片厂果冻传媒公司麻豆 | 免费三级网 | 中文字幕国产专区 | 涩涩AV视频一区二区三区 | 国产精品一区二区在线播放 | 久久精品黄AA片一区二区三区 | 国产高清管线视频免费 | 亚洲精品久久精品一区二区 | 国产97精品久久久天天A片 | 久久国产精品一国产精品金尊 | 摸摸美女全身 | 中文字幕日产乱码国内自 | 日韩精品AV一二三区在线 | 一级视频在线观看完整版 | 国产美女视频一区二区三区 | 亚洲AV一宅男色影视 | 国产精品美女自在线观看免费 | 夜鲁夜鲁夜鲁视频在线观看 | 老师您的兔子好软水好多动漫 | 小蝌蚪视频app无限看 - 丝瓜ios视频丝瓜视 | 日日噜噜夜夜狠狠久久丁香婷婷 | 中国老妇另类xxxx | 国产ts最新人妖在线 | 久久99国产综合精品AV蜜桃 | 中文版在线乱码在线看 | md色视频在线观看免费 | 黄页大全在线观看 | 午夜西瓜视频在线观看 | 色偷偷亚洲女人天堂观看欧 | 久久久这里有精品 | 最近免费更新中文在线观看 | 男生解开内衣揉捏胸视频 | 又色又爽又黄的A片免费看苍井空 | 在暴雪时分电视剧免费观看吴磊 | 亚洲 欧美 制服 | 日韩一卡2卡3卡4卡新区亚洲 | Jizjizjizjiz日本护士水多 | 狠狠躁夜夜躁人人爽天天段 | 四房播播在线电影 | 天天插日日胔夜夜干 | 91po国产在线高清福利 | 日本一道高清视频1区 | 国产99精品视频 | 国产乱子伦在线一区二区 | xxxx影院| 国产成都一二三四区 | 波多野结衣中文字幕一区二区三区 | 在线观看视频一区 | 毛片a区| 又黄又爽又无遮挡在线观看免费 | 色欲AV久久综合人妻无码 | 中文字幕不卡在线 | 六月婷婷在线 | 国产成人mv 在线播放 | 狠狠五月 | 蜜桃AV亚洲第一区二区 | 国精一区二区AV在线观看网站 | 韩日美无码精品无码 | 最新的国产成人精品2022 | 一级做a爰片久久毛片16 | 日本阿v视频高清在线 | 91新网址 | 日韩内射美女人妻一区二区三区 | 最新国产在线播放 | 亚洲婷婷天堂在线综合 | 久久精品国产日本波多麻结衣 | 黄色一级片免费网站 | 四房色播在线电影 | 亚洲免费观看视频 | 日本正能量不良网站 | 久久精品无码人妻无码AV蜜臀 | 国产免费网站看v片在线 | 黄色成年网站 | 亚洲无人区码二码三码区别图 | 国产精品丰满人妻AV麻豆 | 性xxxxxxx欧美胖老太肥肥 | 1000部做羞羞事禁片免费视频网站 | 国产精品99精品无码视亚 | 国产精品高潮呻吟AV久久无码 | 啊灬啊别停灬用力啊免费视频 | 无码色情一区二区在线看 | 国产淫语对白在线 | 久久人视频 | 日韩三级在线 | 在线播放午夜理论片 | chinese老太交视频在线观看 | 年轻的朋友6 免费观看 | 国产精品黄在线观看免费网站 | 激情做人爱视频在线观看 | 亚洲AV福利天堂一区二区三 | 久久久久香蕉视频 | 四虎影在线在永久观看 | 亚洲一区自拍高清亚洲精品 | 91短视频版在线观看www免费 | 色爱区综合激情五月综合激情 | 四房色播在线电影 | 亚州网 | 毛片免费网 | 97国产精品人妻无码免费 | 亚洲欧洲成人 | jizz亚洲| 成人网18免费视频 | 四虎影视国产在线观看精品 | 亚洲免费影视 | 久久免| 亚洲无专砖码直接进入 | 国产妇女在线 | 我强进了老师身体在线观看 | 久久亚洲国产高清 | 国产真实乱人偷精品人妻图片 | 欧洲专线二三四区 | 久久婷婷国产剧情内射白浆 | 精品一品国产午夜福利视频 | 欧美色噜噜 | 日本毛片免费韩国 | 国产护士在病房AV做爰小说 | 在线欧美色图 | 天天操天天操天天操天天操 | 三级成年网站在线观看 | 免费无码又爽又刺激A片小说在线 | 国产三级中文字幕 | 偷拍自伦2018| 狠狠综合久久综合鬼色 | 免费福利资源站在线视频 | 无遮挡高清一级毛片免费 | 欧美阿v视频在线大全 | 亚洲熟女乱综合一区二区在线 | 国精产品一区二区三区 | 一级美国乱色毛片 | 度年华在线观看全集免费播放 | 丁香花五月婷婷开心 | 嘬弄她书房高H | 午夜时刻免费入口 | 国产1988精品A片 | 日本亚洲天堂网 | h片在线观看 | 亚洲精品偷拍AV一区二区 | 草草视频免费在线观看 | 婷婷五月小说 | 少妇人妻偷人精品无码视频新浪 | 精品九九久久国内精品 | 狠狠色丁香婷婷综合久久来 | 国产一区二区在线免费观看 | 先锋影音男人av资源 | 久久久久九九精品影院 | 在教室伦流澡到高潮H女攻视频 | jizz国产精品网站 | 两根巨龙在她腿间同时进出 | 日韩A片无码一区二区五区电影 | 亚洲中文字幕无码爆乳APP | 激情无码人妻又粗又大又硬 | 欧美白虎逼 | 日韩色影院 | 18岁禁看网站 | 中文字幕国产专区 | 欧亚乱色熟一区二区三四区 | 色又黄又爽18禁免费视频 | 欧美日韩免费播放一区二区 | 天堂在线中文字幕 | 成人免费电影 | 国产亚洲精品美女 | 四虎影在线在永久观看 | 99re最新视频 | 日本成熟视频免费视频 | 国产瑜伽白皙一区二区 | 久草青娱乐 | 欧美黑人添添高潮A片视频 欧美激情无码成人A片 | 国产成人精品福利色多多 | 亚洲v欧美| youjizz麻豆| 在线观看国产三级视频 | 古装一级毛片顶级 | 老熟女交换五十路交换A片视频 | 久久国产综合 | 狠狠干影院 | 在线播放91撕破艺校舞蹈系 | 强奷漂亮的女邻居完整版 | 青草视频国产 | 四虎8848dvd| 一二三四日本高清无吗 | 打屁股gay | 好硬好湿好大再深一点动态图 | 亚洲精品久久久久无码AV | 欧美激情A片久久久久久 | 一级国产黄色片 | 久久99久久精品97久久综合 | 成人片黄网站A片免费 | 亚洲一卡二新区乱码绿踪林 | 国产精品中文字幕在线观看 | 成年女人在线视频 | 自拍97| 国内自拍视频在线观看 | 久久国产欧美国日产综合抖音 | 波多野结衣中文字幕在线播放 | 五月天婷婷精品免费视频 | 极品妖艳| 日本中文在线观看 | 久久91久久91精品免费观看 | 国产成人精品必看 | 午夜视频福利在线观看 | 四虎精品 | A欧美爰片久久毛片A片 | 中文人妻AV久久人妻水密桃 | 国产亚洲精品久久精品6 | 国产精自产拍久久久久久蜜 | 久久有精品 | 中文字幕精品在线 | jizz免费一区二区三区 | 在线亚洲小视频 | 一起看电影网 | 日本不卡在线一区二区三区视频 | 国产精品久线观看视频 | 亚洲成A人无码亚洲成WWW牛牛 | 午夜一级毛片不卡 | 国内精品美女视频免费直播 | 九九免费精品视频 | 国产综合有码无码中文字幕 | 婷婷成人丁香五月综合激情 | 久综合色 | 婷婷综合亚洲爱久久 | 欧美成人h版整片合集 | a网站在线观看免费网站 | 色婷婷免费视频 | 中文人妻AV久久人妻水 | 国产又爽又大又黄A片另类软件 | 曰本女人一级毛片看一级毛 | 巜疯狂的少妇4做爰BD小说 | 日本黄 色 成 年 人免费观看 | 99久久99久久精品国产 | 色情视现频免费观看 | 国产在线观看免费视频在线 | 亚洲日本精品 | 国产亚洲精品久久久久久无99 | 欧美精品一区二区A片免费 欧美久久久无码精品亚洲日韩小说 | 青草网址 | 无码中文字幕无码一区日本 | 亚洲男人片片在线观看 | 亚州笫一色惰网站 | 亚洲视频一区在线观看 | 青青热久免费精品视频在首页 | 黄页视频在线观看免费 | 亚洲天堂91 | 日本巨乳亚洲高清 | 日韩欧美成人免费中文字幕 | 午夜久久免影院欧洲 | 偷偷狠狠的日日高清完整视频 | 国产毛片女人18水多 | 九热这里只有精品 | 国产ts| 国产免费AV吧在线观看 | 欲盖弄潮百度影音 | 成人免费在线电影 | 国产色情18一20岁片A片下载 | 中文字幕天堂最新版在线网 | 国产午夜一级鲁丝片 | 波多野结衣xfplay在线观看 | 国产在线观看免费观看不卡 | 天天综合色天天综合 | 亚洲精品动漫免费二区 | 81制片厂传媒果冻传媒一区 | 久久精品国产在热久久2024 | 天天操夜夜操视频 | 免费一级毛片不卡在线播放 | 久久这里只有是精品23 | 国产成人一区二区三区别 | 91chinese videos| 99在线精品国自产拍 | 日本免费视频费观看在线 | 免费做A爰片久久毛片A片下载 | 无遮挡18禁羞羞视频免费动漫 | 国产微拍 | 韩国免费特一级毛片 | 日韩一区二区在线免费观看 | 日本韩国香港三级 | 波多野结衣一区二区在线 | 荡公乱妇第1章方情公憩系列大 | 亚洲欧洲精品成人久久曰 | 日本一本免费线观看视频 | 黄色网址app | 日产精品一二三四区气温 | 国产精品亚洲污污网站入口 | www.91久久| 亚洲精品国产精品精 | 嫩草伊人久久精品少妇AV网站 | 一区二区三区高清 | 狠狠鲁图片 | 日韩国产人妻一区二区三区 | 久久综合久久网 | 成人国产精品免费视频 | 欧美日韩在线视频免费完整 | 天天操天天干天天玩 | A片做爰片仑理片免费看 | 无套内谢少妇毛片A片樱花 无套内谢孕妇毛片免费看 无修无遮h韩漫视频网站 | 永久免费看成人A片在线播放 | 桃色AV久久无码线观看 | 久久九九视频 | 亚洲国产系列一区二区三区 | 天堂资源在线最新版地址下载8 | 97视频免费在线观看 | 色网址大全123 亚洲 | 国产中文在线 | 老汉色老汉首页a亚洲 | 亚洲一级黄色片 | 五月婷婷久久草 | 国产精品呻吟AV久久高潮 | 高树玛利亚种子 | 日本一本免费一二区 | 色播影院性播免费看 | 亚洲欧美国产精品久久久 | 国产精品1卡二卡三卡四卡乱码 | 要色地址 | A级毛片无码久久精品免费 a级毛片在线免费 | 午夜日韩久久影院 | 精品一二三区久久AAA片 | 中文字幕在线不卡视频 | 欧州一级毛片 | 国产成人午夜精品影院 | 麻豆传媒在线完整视频免费 | 欧美激情性AAAAA片欧美 | 久久久全国免费视频 | 在线观看国产亚洲视频免费 | 国产99精品在线观看 | 久久久久久久久影院 | 中文日产无乱码AV在线观 | 91制片厂制作果冻大象传媒 | 最近最新中文字幕完整版免费高清 | 亚洲熟女乱色综合亚洲小说 | 黑人大战白人欧美系列 | 好屌草这里只有精品 | 成人影视 | 亚洲高清一区二区三区电影 | 亚洲国产精华液网站W | 亚洲欧美v国产一区二区 | 最近韩国日本免费观看高清 | 亚洲一区二区三区在线视频 | 久久精品国产视频在热 | 不卡一卡二卡三亚洲 | 色播影视 | 人妇在线 | 青青国产 | 一级免费a| 狠狠色噜噜狠狠狠狠色吗综合 | 亚洲色婷婷久久精品AV蜜桃久久 | 国产黄网站 | 午夜福利体验免费体验区 | 午夜性色吃奶添下面69影院 | 国产做A爰片毛片A片美国 | 亚洲成人99| 欧美黑人乱大交灬太大了视频 | 娇妻被交换粗又大又硬视频 | 欧美hdjzz| 久久综合视频网站 | 久久视频精品38线视频在线观看 | 五月天婷婷激情视频 | 老司机午夜网站 | 麻豆免费观看高清完整视频在线 | jizz在亚洲| 国色天香社区在线最新 | 精品人妻无码一区二区三区VOD | 欧美视频在线播放bbxxx | 日韩精品一区二区三区AV在线观看 | 中文字幕亚洲一区婷婷 | 综合网天天 | 最新的国产成人精品2022 | 色视频免费版高清在线观看 | 日本中文不卡 | 中文字幕日本最新乱码视频 | 蜜桃综合网 | 成熟少妇AV片在线观看 | 国产毛片一级 | 91久久精品国产亚洲 | 黄网站色视频大全免费观看 | 91高清免费国产自产拍2021 | 视频区国产亚洲.欧美 | 巜疯狂的少妇4做爰HD | 最新更新国内自拍视频 | 搡女人真爽免费视频大全软件 | 天堂网在线最新版官网 | 影音先锋电影三级伦理 | 91视频3p| 麻豆91精品91久久久 | 亚洲精品无码高潮喷水A片软件 | 亚洲国色天香卡2卡3卡4 | 免费在线色视频 | 狼人综合色| 99在线免费视频 | 日本三级在线观影 | 久久婷婷激情 | 永久免费看A片无码精品 | 91国内视频 | 亚洲精品久久久WWW 亚洲精品久久久AV无码专区 | 免费观看日本视频 | 97久久久久国产精品嫩草影院 | 97青草最新免费精品视频 | 亚洲伊人久久综合成人 | 无码人妻毛片丰满熟妇区毛片国产 | 小黄文污到湿透嗯啊滴水纯肉 | 91插插插网站 | 女人18毛多水多A片视频 | 一本一道日韩一二三四区免费 | 久久婷婷五月综合色国产 | 日本不卡在线 | 韩国黄色网址 | 国产欧美国日产在线播放 | 久久久久毛片免费观看 | 天天天 | 日日噜噜夜夜狠狠扒开双腿 | 日韩视| 国产91精品黄网在线观看 | 精品99卡1卡2卡3乱码 | 波多野结衣日韩 | 97色情在线观看免费高清 | 日本一区二区三区四区在线观看 | 久久久999国产精品 久久久91精品国产一区二区三区 | 欧美 日本 国产 | 风韵丰满熟妇啪啪区老熟熟女 | 色婷婷免费视频 | 国产人妻人伦精品久久久 | 国产丰满人妻一区二区三区 | 久久影院一区二区三区 | 九九久久精品 | 欧美亚洲色帝国 | 99热在线观看精品 | 夜夜操天天操 | 四虎影视最新的2024版地址 | 秋霞成人国产理论A片 | 日韩久久一区二区三区 | 亚洲欧美自拍色综合图 | 出差被公舔到高潮 | 欧美视频一二三区 | 在线观看国产三级视频 | 亚洲中文国产最新在线观看 | 成熟少妇大片免费看 | 十九岁日本电影免费完整版 | 欧美黄色一级视频 | 色欲AV亚洲午夜精品无码电影 | 91久久精品国产亚洲 | 日韩大片在线观看 | 诱人的女邻居在线观看 | 亚洲国产午夜精品乱码 | 日日噜噜夜夜狠狠tv视频免费 | 国产日产欧产精品精品推荐在线 | 日本午夜片成年www 日本午夜精品 | 1区2区3区产品乱码免费 | 国产下药迷倒白嫩美女在线观看 | 欧美一区二区三区成人看不卡 | 日日噜噜夜夜狠狠tv视频免费 | 日本欧美大码aⅴ在线播放 日本欧美不卡一区二区三区在线 | 四虎影视永久在线观看 | 国产精品18久久久久久欧美 | 国产精品国产三级国产专区不 | 婷婷色爱区综合五月激情韩国 | 爽到喷水(H)小说 | 蜜桃MV在线播放免费观看网站 | 波多野结衣家庭教师免费观看 | jizz日本老师 | 亚洲国产精品VA在线看黑人 | 欧美性bbbbbxxxxxddd | 蝌蚪视频91 | 国语普通话对白CHINESE | 美国毛片aaa在线播放 | 欧美另类色图片 | 99精品久久| 国产乱码卡二卡三卡43 | 男Ji大巴进入女人的视频小说 | 日本成年奭片免费观看 | 午夜影院在线费看 | 最近最新中文字幕MV在线1 | 一区二区三区视频 | 夜夜夜噜噜噜 | 激情宗合 | 成人网zhan | 蜜桃精品AV无码喷奶水小说 | 91精品国产91久久久久 | 丰满年轻岳欲乱中文字幕电视 | 伊人亚洲AV久久无码精品 | 中文字幕无码无卡视频 | 久久久综合九色综合中文字幕 | 亚洲精品色情影片 | 丁香婷婷六月综合缴清 | 国产精品兄妹在线观看麻豆 | 国产男女猛烈无遮挡A片漫画 | 丁香人妻小说 | 天天干天天骑 | 撕开胸罩胸奶头玩大胸动态图片 | 日本丰满大乳人妻无码 | 婷婷精品在线 | 欧美一级特黄刺激爽大片 | 国产极品精频在线观看 | WWW国产精品人妻一二三区 | 龙之心4:心火之战 | 四虎精品| 国产午夜毛片 | 久久免费看少妇高潮A片特黄古 | 爱沢かりん | 国产亚洲精品久久久久久移动网络 | 宝贝看我是怎么吃你水蜜桃的视频 | 一区二区三区免费看 | 99热在线获取最新地址 | 国产福利资源网在线观看 | 欧美性生交活XXXXXDDDD | 色网站大全 | 国产jizzjizz视频免费看 | 日日麻批免费视频播放高清 | 中国免费毛片 | 久久激情免费视频 | 久热国产vs视频在线观看 | 夜夜操综合| 久久七国产精品 | 播播网手机在线播放 | 免费在线黄色网 | 国产成人不卡亚洲精品91 | 日本一道一区二区视频 | 色噜噜噜AV亚洲男人的天堂 | 国禁国产you女视频网站 | 在线天堂中文最新版资源 | 狠狠躁日日躁夜夜躁2024麻豆 | 一个人看的免费高清www视频 | 成年人免费网站视频 | 色偷偷资源站 | 久久厕所精品国产精品亚洲 | 亚洲国产成人久久精品影视 | 麻豆一二三区AV传媒 | 免费涩涩屋草莓榴莲秋葵绿巨人 | 凹凸在线无码免费视频 | 一级黄色片在线观看 | 国产又爽又猛又粗的A片 | 影音先锋av色噜噜影院 | 女人18毛片a级毛片一区二区 | 国产在线播放精品视频 | 日韩一二三 | 国产日韩欧美一区二区三区综合 | 国产农村妇女精品一二区 | 日本樱花视频高清观看 | 秋霞久久久久久一区二区 | 最好在线观看免费韩国日本电影 | 欧美色欧美亚洲另类二区 | 亚洲熟女乱色综合亚洲小说 | 么公又大又硬又粗又长 | 色视频在线免费 | 亚洲 在线 日韩 欧美 | 久久国产精品99久久久久久牛牛 | 亚洲国产欧美目韩成人综合 | 免费看饥渴难耐的少妇软件 | 人人影视网 | 欧美FREE性黑寡妇 | 久久精品网站免费观看 | 黄色免费观看视频网站 | 天天想夜夜操 | 国产视频99 | 久久99国产精品成人欧美 | 就要干| 一本大道卡一卡二卡三乱码 - 八 | 欧美a极品极品欧美 | 欧美一级第一免费高清 | 国产色XX群视频射精 | 丁香花在线观看免费观看图片 | 欧美成人丝袜一区二区 | 日韩黄网| 古装一级淫片a免费播放口 古装一级无遮当一级毛片 古装一级毛片手机免费看 古装一级毛片免费观看 | 日本a视频 | 亚洲 欧美 字幕 一区 在线 | 色情www欧美影院 | 国产午夜AV亚洲欧美小说 | 有一婷婷色 | 中文字幕免费在线视频 | 2021国产精品视频一区 | 亚洲高清无在码在线电影 | 工口里番外番全彩无遮挡 | 日本无码毛片一区二区手机看 | 久久久噜噜噜久久久 | 2024夜夜干天天骑日日日 | 国产一区免费在线观看 | 免费视频在线观看网站 | 好想被狂躁A片免费久99 | 可以免费在线看黄的网站 | 国语自产拍在线观看偷拍 | 大胆日本无码一区二区 | 中文字幕在线永久 | 手机福利视频导航 | 午夜免费福利小电影 | 久久99国产精品久久99小说 | 欧美午夜精品 | 周海媚主演的电视剧 | 97色情在线观看免费高清 | 日韩不卡视频在线 | 国产成人一区二区三中文 | 桃子视频免费观看完整版HD | 日本一区二区三区免费A片 日本一区色情无码视频在线观看 | 中国孕妇XXXXXXXXX孕交 | 日本无码蜜桃波多野结衣 | 影音先锋中文无码一区 | 99久久精品一区二区三区 | 一本色道久久爱88AV俺也去 | 精品国产中文字幕在线视频 | 辽宁老熟女高潮狂叫视频 | 国产又大又硬又粗 | 被黑人做的白浆直流 | 国产一区二区免费在线观看 | 欠cao的sao货撅屁股双性 | 少妇高清性色生活片成人版 | 中文国产乱码在线人妻一区二区 | 无码一区二区三区 | 欧美三级久久 | 国产日产国无高清码2020 | 天天干狠狠干 | 国产传媒精品1区2区3区 | 免费看一级黄色片 | 黄色毛片免费网站 | 人妻少妇被粗大爽9797PW | 91在线天堂 | 最近韩国电影高清免费观看在线 | 日日夜夜免费精品视频 | 国产精品爽爽va在线观看无码 | 亚洲精品不卡久久久久久 | 色综合久久88色综合天天 | 老司机精品视频一区二区 | 精品国产三级在线观看 | 亚洲一区二区女搞男 | 无码免费人妻A片AAA毛片一区 | 亚洲一区日本 | 亚洲A片不卡无码久久 | 国产又色又爽又黄的视频免费观看 | 色欲人妻AAAAAAA无码 | 欧美片免费观看网址 | 曰本人做爰大片免费观看一 | 久久91久久91精品免费观看 | 久久亚洲精品国产露脸 | 精品午夜寂寞影院在线观看 | 精品国产片一区二区三区 | 国产美女视频一区二区二三区 | 被强行糟蹋的女人A片 | aaaaaa级特色特黄的毛片 | 国产伦亲子伦亲子视频观看 | 久久综合丁香 | 又湿又深又爽的A片视频 | 国产高清视频免费最新在线 | 日韩在线观 | 成年女人免费视频 | 小说高黄全肉 | 麻豆国产精品AV色拍综合 | 久久久久久久久久久久福利 | 久久久爱毛片一区二区三区 | 亚洲婷婷国产精品电影人久久 | 成人爽a毛片在线视频网站 成人首页 | 日韩电影一二三区 | jizz中国日本 | 国产成人精品无码久久A片小说 | 国色天香日本免费观看 | 亚洲综合AV色婷婷五月蜜臀 | 色宅男午夜电影网站 | 欧洲乱码卡1卡2在线 | 一体一道久久88色合综合网 | 免费一级a毛片在线 | 三级在线网址 | 天天躁 | 和少妇邻居做爰伦理 | 被黑人伦流澡到高潮HNP动漫 | 日本久久久 | 97超碰A片人人爽人人澡97 | 天天射天天干天天插 | 中文字幕欧美视频 | 久久精品国产曰本波多野结衣 | 80电影天堂网香焦视频 | 成人国产综合 | 快播5.0.80完美版 | 风流艳帝 | 好爽插到我子宫了高清在线 | 国产精品久久人妻无码网站蜜臀 | 一二三区乱码不卡手机版 | 桃子视频在线高清免费观看 | 一区二区视频在线观看高清视频在线 | 最近韩国日本免费高清观看直播 | 狠狠综合久久综合鬼色 | 激情六月丁香婷婷四房播 | 狠狠色噜噜狠狠色综合久 | 成人日韩在线 | 青青青国产在线观看手机免费 | 日本99久久九九精品无码 | 成熟人妻AV无码专区A片 | 色妞干网| 四虎永久在线精品免费观看视频 | 日韩美一区二区 | 第一次破處在线国语视频播放 | 乱系列140章肉艳1一12 | 青青热久久国产久精品 | 搞av网| 婷婷久久久五月综合色 | 中文日产无乱码AV在线观 | 成年网站在线在免费播放 | 97在线播放| 中文字幕 制服 亚洲 另类 | 国产精品不卡在线 | 国产资源视频在线观看 | 国产又色又爽又黄的男女小说免费 | 婷婷开心激情综合五月天 | 日韩黄网 | 99精品视频观看 | 国产护士在病房AV做爰小说 | 一本久道久久综合婷婷五月 | 国产精品免费久久久免费 | 很黄很色吸奶头A片动态图 狠狠撸的网站首页 | 国产精品对白交换视频 | 日本久久高清一区二区三区毛片 | 中文字幕AV亚洲精品影视 | 清纯漂亮小美女准备啪啪 | 99久久久无码国产AAA精品 | 精品人妻无码一区二区三区蜜桃臀 | 久久伊人亚洲 | 全国三级网站免费观看 | 久久99精品久久久久久青青日本 | 在线看免费无码A片视频 | 国产精品午夜免费观看网站 | 久久精品免费大片国产大片 | 精品一区二区三区四区五区六区 | 老太奶性BBWBBW在线观看 | 自拍视频在线观看亚洲福利 | 三贵情史 | A片高潮抽搐揉捏奶头视频 A片高潮抽搐揉捏奶头视频在线看 | 91精品久久久久久久99蜜桃 | 99久久无码一区人妻A片蜜桃 | 国产高潮抽搐在线观看 | 国产高清片 | 成人综合亚洲欧美一区h | 亚洲精品一区二区三区麻豆 | 久久免| beeg -日本 beeg.黑人 | 嗯好爽快点插我视频在线播放 | 亚洲色欲色欲202477小说 | 青草青草久热精品视频99 | 一区二区人妻精品无码A片 一区二区人妻无码欧美 | 在线视频一区二区三区三区不卡 | 品色堂新网址 | 国产成人精品一区二区三区影院 | 91制片厂果冻传媒公司麻豆 | 波多野结衣一区二区 三区 波多野结衣一区二区 | 亚洲精品网站日本xxxxxxx | 免费观看少妇全黄A片 | 嗯啊跳蛋啊别舔了啊 | 成人性视频免费网站在线 | 国产精品人妻一码二码 | a级在线| 亚洲国产欧美另类 | 极品少妇小泬50PTHEPON | 综合五月婷婷 | 欧美高清在线视频一区二区 | 把腿张开看老子臊烂你免费 | 色欲国产麻豆一精品一AV一免费 | 中文字幕免费在线播放 | 亚洲日本欧美日韩中文字幕 | 日韩A片中文字幕视频免费 日韩MV欧美MV中文无码 | 国产精品九九视频 | 国产精品久久久久久久久久久久 | 欧美精品18videosex性欧美 | 这里只有精品久久 | 无人区卡一卡二卡三乱码网站 | 无码日韩精品一区二区免费 | 一区二区三区不卡在线 | 粗暴肉开荤高H文公交车 | 亚洲 欧美 校园 春色 小说 | 日日噜噜噜噜人人爽亚洲精品 | 亚洲精品久久久久久久蜜臀老牛 | 忘忧草日本社区在线播放 | 久久午夜影院 | 偷拍亚洲网友图片区 | 66成人| 亚洲丰满熟女一区二区蜜桃 | 最好看的免费观看高清电影 | 久99久热只有精品国产99 | 二级黄绝大片中国免费视频 | 九九影院免费还看视频 | 人妻日本无中文字幕无码 | 国产又黄又猛又粗又爽的A片 | 国产国拍亚洲精品av麻豆 | 欧美日韩永久久一区二区三区 | 91导航在线观看 | 原神美女被超污app 越南护士毛茸茸性 | 成 人 色综合 | 真人性做爰88式免费视频 | 成人做爰69片免费看网站 | 国产欧美精品一区二区三区-老狼 | 国产精品久久久久影院免费 | 韩国理伦电影 | 国产成年无码V片在线 | 亚洲女同精品中文字幕 | 美女裸露胸部100%无遮挡 | 婷婷综合色五月久丁香 | SM女人捆绑调教网站A片软件 | 日本护士激情波多野结衣 |