欧美日韩亚-欧美日韩亚州在线-欧美日韩亚洲-欧美日韩亚洲第一区-欧美日韩亚洲二区在线-欧美日韩亚洲高清精品

金喜正规买球

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等千款熱門(mén)軟控件火熱銷(xiāo)售中 >>

  本文介紹為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)換器類(lèi),實(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è)類(lèi)似Key,Value的轉(zhuǎn)換都要寫(xiě)個(gè)Converter類(lèi)

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

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

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

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

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

  解決方法:

  對(duì)于第一個(gè)問(wèn)題我們選擇DataGridBoundColumn類(lèi)做為基類(lèi),重寫(xiě)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類(lèi)實(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類(lèi)基本開(kāi)發(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
亚洲国产一成久 | 老司机午夜福利 | 激情文学综合区图片区小说区 | 国产sm重味 | 亚洲综合一区二区三区人妖 | 免费级人成大片在线观看 | 午夜性影院在线观看视频播放 | 亚洲男人的天堂在线aⅴ视频 | 午夜福利精品在线播放 | 午夜性刺激 | 日本在线视频 | 国产老熟女老女人老人 | 97视频在线观看视频 | 国内一区二区三区在线观看 | 日本国产高清免费 | 视频一区 | 中文字幕乱码亚洲无线三区 | 精品视频在线 | 日本免费在线视频 | 国产普通对白手机在线 | 国产一区二区精品 | 三级国产久 | 网友自拍露脸国语对白 | 亚洲国产呦萝小初 | 亚洲日韩国产欧 | 国产一级a毛一级a看免费视频 | 日韩欧美一本书道一区二区 | 日韩欧美一区二区在线精品 | 啦啦啦免费高清在线观看 | 国际国内自拍偷拍视频摄影 | 欧美二区在线观看 | 国产精品巨作无遮拦 | 亚洲码专区亚洲码专区 | 国产在线播放免费 | 日韩精品一区 | 欧美激情欧美狂野欧美精品免费 | 欧美日韩不卡一区二区 | 欧美日韩亚洲精品瑜伽裤 | 精品免费在线 | 神马影院| 日韩欧美性爱视频网站翘臀 | 欧美性色欧美a在线在线播放 | 亚洲桃色 | 日本aⅴ中文免费观看 | 亚洲欧美日韩中文国产不卡 | 一区二区三区不卡 | 日韩a人 | 亚洲午夜在 | 色与欲影视天天看综合网 | 91大神精品在线观看 | 在线观看视频一区精 | 午夜私人成年影院在线观看 | 中文字幕精 | 99精品综合 | 免费在线电影网站 | 女男羞羞视频网站免费 | 亚洲综合一区二区三区四区五区 | 国产精品网红尤物福利在线 | 日韩精品一区二区国产精品一 | 青草青草久热精品视频在线观看 | 中文字幕一区二区三 | 日韩亚洲产在线观看 | 精品第一国产综合精品蜜芽 | 日本大胆一区二区三区 | 国产欧美一区二区 | 大片在线观看免费 | 99re这里只有精品国产精品 | 精品97国产免费人成视频 | 手机大看福利永久国产 | 国产网站大全在线观看 | 亚洲精品第一页 | 午夜国产免费 | 小小水蜜桃高清电视剧观看 | 中文字幕一区二区三区精品 | 国内成人精品亚洲 | 97干视频| 欧美日韩在线一区二区观看 | 无遮无挡三级动态图 | 亚洲欧美日韩综合第一页 | 羞羞视频免费入口网站 | 岛国成人免费大片在 | 不用播放器的a网站 | 日本大臿亚洲香蕉大片 | 亚洲一级淫片免费在线观看 | 国产自拍论坛第一页 | 添bbb免费看高清视频 | 最近中文字幕在 | 国产人妖视频一区二区 | 91香蕉污app在线下 | 日本一区二区三区免费乱视频 | 天堂mv在线免费看 | 国产一级高| 激情深爱五月开心婷婷综合 | 中文字幕一精品亚洲无线一区 | 国产一级二级三级 | 欧洲自拍拍偷综合 | 国内精品视频在 | 电影在线观看高清完整版 | 日韩欧美一区二区三区四区 | 超刺激高跟鞋脚交视频在线 | 免费高清影视在线观看视频网站 | 亚洲视频精品在线观看 | 亚洲人成在线观看网站播放 | 恋丝袜视频 | 极品白丝袜app网站 亚洲综合精品网站在线观看 | 亚洲国产午夜 | 综合影视亚洲中文 | 亚洲开心婷婷中文字幕一区 | 91日本在线观看亚洲精品 | 91天堂а8天堂资源在线官网 | 国产三級精品专区 | 香港三级台湾三级在线播放 | 韩国三级hd中文字幕电影天堂 | 国产在线观看美女福利精 | 免费电影在线观看 | 国产亚洲精品一区二区在线 | 日韩在线视频不卡一区二区三区 | 色综合久 | 国产免费一区二区三区免费视频 | 婷庭九月天综合水蜜桃 | 又硬又粗又长又爽免费看 | 日韩激情国产 | 国产丶欧美丶日本不卡 | 国产又粗又黄又爽的大片 | 国产精品自在线拍 | 亚洲步兵在线播放 | 日皮视频免费 | 一二三四在线观看免费中文吗中文 | 国产一级手机在线毛 | 精品国产自在现偷99精品 | 国产人伦激情在线观看 | 伊人影视在线观看日韩区 | 国产精品免费大片 | 亚洲一区二区 | 国产专区| 欧美日韩性生活视频 | 国产理论片在线观看 | 欧美+日本+国产+在线观看 | 日韩电影手机在线观看 | 国产熟女激情视频自拍 | 日韩一区二区三区精品 | 精品三级乱伦免费 | 亚洲欧洲国产视频 | 中文有码国产精品 | 欧美日韩中文字幕在线一区二区 | 日本高清视频网址 | 不卡精品| 亚洲视频在线 | 国产一区视频在线观看 | 野花社区视频在线观看 | 18出禁止看的啪视频网站 | 欧美v亚洲v综合v国产v | 成人天堂资源在线观看 | 欧美另类69 | 神马电影院午夜神福利在线观看 | 亚洲欧美国产精品一区二区 | 亚洲国产欧美日韩一区 | 精品国产自在现偷99精品 | 不卡中文字幕激情视频网站 | 91极品尤物在线观看 | 欧美精品三区 | 最近最好的2025中文日本字幕 | 成人国产亚洲精品a区天堂 激情五月天深爱网 | 亚洲精品∧v在线观看 | 欧美性活一级视频 | 天天射天| 欧美精品人爱a欧美精品 | 亚洲人成在线观看影院 | 玉足在线观看 | 末发育娇小性色xxxx | 亚洲精品中文字幕乱码三区 | 日韩高清片一二区 | 国产男女免费完整视频 | 在线观看日本 | 韩剧排行榜| 精品日韩成人欧美 | 菠萝蜜视频在线观看入 | 女厕所撒尿视频免费 | 欧美人与动生 | 荫蒂添的好舒服视频囗交 | 国产亚洲免视频在线观看 | 日韩欧美一区二区三区永久免费 | 国产乱码一二 | 日韩亚洲欧美一区噜噜噜 | 最新高清电影免费在线观看下载 | 亚洲中文字幕乱码熟女在线 | 国产a∨精品一区二区三区不 | 亚洲精品区m | 羞羞视频下载ap | 国产一区二区三区高清在线观看 | 亚洲高清国产拍精品动图 | 亚洲国产精品一区 | 国产国产裸模裸模私拍视频 | 最新国产乱视频伦在线 | 婷婷亚洲综 | 五月综合激情婷 | 亚洲五码中文字幕 | 99国产免线观看九 | 热播电视剧在线观 | 二区三区国产亚洲综合 | 夜夜橾天天橾 | 午夜美女视频在线 | 国产精品9 | 国产精品一区二区无线 | 精品国产免费人成电影在线观 | 亚洲第一 | 男人操女人网站 | 国产精品永久免费自在线观 | 日本高清不卡中文字幕网 | 亚洲人成影视在线观看 | 日亚洲第| 日本一本免费一二区 | 国产在线观看免 | 免费人成黄页在线观看69 | а√最新版天堂资源在线 | 国产精品66福利在线观看 | 日本精品一区在线观看 | 美女被肏翻白眼视频在线观看 | 网站资源多午夜激情影院 | 午夜高清性色生活片 | 手机在线看电影的网站 | 大地影院mv高清在线观看免费 | 大地资源第二页中文高清版 | 亚洲日本欧美中文幕 | 国产资源一区 | 成人3d动漫一区二 | 无人视频在线观看免费播放影院 | 成年奭片免费观看 | 日韩精品专区在线影院重磅 | 亚洲欧洲日韩综合色天使 | 天堂网果冻传媒 | 好看的电影电视剧在线观看 | 国产免费永久在线观 | 国产精品美女网站在线观看 | 亚洲精品动漫一区二区三区在线 | 亚洲欧美日本a∨在 | 亚洲午夜在 | 放荡的美妇在线播放 | 中文字幕热久 | 九九热视频在线免费观看 | 国产精品对白交换绿帽视频 | 国产乱子伦 | 亚洲精品视频一卡二卡三卡 | 日韩在线一区二区视频中文字幕 | 777国产偷窥盗摄精品原味 | 欧美成aⅴ人高清三级 | 亚洲国产日韩在线人高清au | 国产最新精品精品视频 | 亚洲视频国产精品 | 国产一区二区三区精品综合 | 亚洲中文字幕一二三区 | 国产一区二区三区免费大片天美 | 欧美色aⅴ欧美综合色 | 在线精品91国产在线观看 | 蜂鸟影院大全免费观看 | 国产视频中文字幕手机版 | 91精品国产人成网站 | 丝袜足控一区二区 | 最新91天堂国产电影在线观看 | 中文字幕一区日韩高清 | 微博网红户外露出在线观看 | 最好看的中文字幕国语电影 | 国产日韩精品一区二区在线观看 | 精品一区精品二区 | 国产精品v日韩精品v欧美精品 | 色偷偷亚洲女人天堂观看欧 | 国产欧美精品一区二区三区四区 | 国产福利免费 | 国产一级一区在线一页 | 日韩一区二区免费看 | 欧美日韩国产第1 | 一区二区三区在线日 | 蜜桃视频在线观看免费播放 | 蜜桃一区二区三区 | 三级乱伦国产欧美 | 国内老司机精品视频在线播出 | 国产精品一区二区精品视频导航 | 午夜男女羞羞爽爽爽视频 | 在线亚洲v日韩v | 敌伦交换一区二区三 | 521影视| 二区不卡| 国产拍揄自揄免费观看 | 国产一区二区精品一区二区 | 中文自拍日本国产 | yin荡护士揉捏乱p办公室视 | 99在线观看视频免费精品9 | 亚洲国产福 | 日本成年人 | 国产精品一区二区在线观看网站 | 午夜三级理 | 日本一区二区三区不卡视频中 | 亚洲无亚洲人成网站77777 | 一区二区在线免费观看 | 美女福利| 国产精品538 | 曰本成片网 | 入口在线观看国产欧美 | 亚美影视免费在线观看 | 国产在视频精 | 最近中文字幕高清中文字 | 亚洲va在线va天堂xxxx | 免费高清电影在线观看 | 国产乱码精品一区二区三区四 | 成年私人影院网 | 国产精品免费αv视频 | 精品欧美一区二 | 星云影院 | 一本到国产在线精 | 一区二区三区四区糖心 | 丰满女人又爽又紧又丰满 | 羞羞影院午夜男女爽爽视频免费 | 无人在线观看视频高清播放 | 国产口爆 | 国产高清视频免费在线观看 | 国产亚洲精品成人a在线 | 成人一区二区三区 | 国产初高中系列视频在线 | 天美传媒果冻传媒国产日本 | 日产学生妹在线观看 | 亚洲午夜成激人情在线国内 | 五月天在线观看视频网站 | 日韩精品视 | 精品系列一区二区三区 | 欧美va亚洲va在线 | 日韩r级电影在线观看 | 亚洲日韩中文在线精品第一 | 在线观看网址 | 国产又粗又猛又爽又黄的视频七张 | 欧美又大粗又爽又黄大片视频 | 91香蕉亚洲精品人人影视 | 草草浮力影院 | 免费啪视频观试看视频 | 高清在线?视频大全 | 成人午夜污污在线观看网站 | 大陆精大陆国产国语精品 | 在线观看片a免 | 国产一级按摩精油电影 | 国语精品91自产拍在线观看二区 | 国产精品网站在线观看 | 在线播放成人高 | 美女被男人桶到爽免费网站 | 欧美动作大片在线观看 | 午夜视频在线观看一区 | 两个人看 | 国产激情自拍亚洲精品国产精品精 | 日韩在线一区二区三区观 | 成在人线| 在线观看福 | 日韩成人激情影院 | 国产自产 | 豆国产94亚洲欧美 | 欧美制服丝袜国产日韩一区 | 国产欧美va欧美va香蕉在 | 秋霞国产午夜伦午夜福利片 | 91成人深夜在线观看 | 国产偷伦视频片免费视频 | 国拍在线精品 | 天天澡日日澡狠狠欧美老妇 | 免费在线观 | 在线观看男人的 | 国产精品13页| 巨大欧美黑人xxxxbbbb | 野花社区| 亚洲一区在线视频在线观看 | 欧美成视频无需播放器 | 国产精品午夜爽爽爽免费 | 国产视频精 | 成人午夜一区二区三区视频 | 成人亚洲性情网站www在线 | 夜夜草视频 | 日本在线高清不卡免费播放 | 国产乱码精 | 大片免费视频观看 | 男女超爽视频免费网站播放 | 每日更新国产精品视频 | 三级全黄的视频在线观看 | 国产亚洲日本精品成人专区 | 99视频在线精品自拍 | 一区二区三 | 精品一区二区三区在线 | 国产精品精品国内自产拍 | 丰满岳乱妇 | 欧美亚洲国产另类制服丝袜 | 在线观看片免 | 亚洲欧美春色激情另类 | 亚洲春黄在线观看 | 91桃色在线免费观看 | 日本福利一区二区三区 | 亚洲精品自在在线观看 | 成人动画在线观看免费污 | 一级视频在线观看免费 | 日本精品一区二区 | 亚洲欧美日韩中文字幕在线一 | 一区二区三区在线观看视频 | 欧美日韩精品国产—区在线 | 电影免费在线观看中文字幕 | 亚洲福利国产精品17p | 日韩中文高清在线 | 香蕉亚洲精品网站国产一二三四 | 国内三级自拍小视频在线观看 | 国产精品一区 | 亚洲无线观看国产超清 | 看h片的网站 | 国产日韩精品一级二级 | 免费最新电视剧电影随心看 | 欧美精品一区二区 | 免费高清视频免费观看 | 欧美在线 | 91日本免费高清 | 中文乱码| 欧美人与动性a欧美精品 | 视频区国产图片区小说区 | 中本亚洲欧美国产日韩 | 亚洲中文字幕在线一区播放 | 国产精品一区二区日韩91 | 日韩高清在线播放不卡 | 中文字幕日韩一区二区三区不卡 | 国产精品视频一区二区三区四 | 国产亚洲第一页电影 | 小姨子在旁边差点被看到 | 三年片大全在线观看免费观看大全 | 国产色系视频免费在线观看 | 激情五月综合网 | 美国十次啦 | 国产中文字幕永久 | 成人高清视频 | 亚洲欧美一区二区综合精品 | 国产一级特黄a大片99 | 精品国产亚洲三 | 乱子伦精品视频 | 国产在线一区二区三区四区居文沛 | 一区两区三区四区乱码国产精品 | 亚洲卡一卡二卡三乱草莓 | 国产成a人片在线观看视频下载 | 免费视频6 | 国产亚洲精品成 | 免费视频在线观看cc | 国产亚洲一区二区手机在线观 | 国产日产欧美一区二区蜜桃 | 2025国产品在线不卡 | 91精品国产aⅴ一区二区 | 日韩精品一区二区三区在线观看 | 国产午夜小视频在线不卡 | 最新亚洲| 国产制服精品一区二区视色 | 日韩欧美中文精品电影 | 日本大乳奶电影在线观看 | 中国特黄美女一 | 欧美不卡 | 国产精品自在 | 成人免费播放 | 欧美a级情欲片在线观看免费 | 大卡三卡免费 | 成人日动漫卡一区二区三区动漫 | 国产精品欧美日韩视频一区 | 国产国语老龄妇女 | 欧美手机手机在线视频一区 | 国产精品一一在线观看 | 日本免费影片一区二区 | 日本三级韩国三级香港三级a级 | 日本免费高清一本视频 | 69一区二三区好的精华液 | 99玖玖爱在线精品免费观看 | 国产极品美女一区二区三区 | 亚洲国产综合一区日韩精品 | 亚洲人人夜夜 | 亚洲人成网| 在线观看网站国产精品 | 性色福利 | 日本一区中文字幕免费 | 国产一区二区三区视频在线观看 | 亚洲欧美日韩综合在线播放 | 午夜福利体验免费体验区 | 国内国外日产一区二区 | 欧美乱妇高清无乱码在线观看 | 欧美日韩中文在线 | 中文字幕在线免费观看 | 扒开老师大 | 日本三级免费 | a级国产乱理伦片在线观看 天美传媒官方网站 | 精品高清美女精品国产区 | 国产在线视频欧美亚综合 | 国产精成人品日日拍夜夜免费 | 激情小说免费阅读 | 国产精品自在自线国产午夜 | 国产中文字幕亚洲 | 日本免费在线视频 | 亚洲一区二区三区高清视频 | 草莓国产手机在线视频 | 自制国产2025福利看片 | 国产成a人亚洲精品无 | 天堂中文最新版在线中文 | 国产91福利小视频在线观看 | 成年人在线播放视频 | 亚洲色偷精品一区二区三区 | 欧美日韩性生活视频 | 欧美一区二区三区激情爽 | 三级国产国语三级在线 | 欧亚乱色熟一区二区三四区 | 国产精品日本一区二区在线看 | 日本高清视频一区二区三区 | 精品国产福利在线观看91啪 | 国产又粗又硬又大爽黄老大爷视 | 一区二区视频免费观看 | h视频免费在线 | 2025年全裸| 日韩精品在线视频直播 | 中文欧美日韩无线码 | 欧美ay亚洲ay日韩 | 精品91一区二区三区 | 亚洲qvod图片区电影 | 青青青国产在线观看 | 日韩欧美国产动漫在线 | 无吗一区二区三区 | 国产精品自在线 | 国产情侣91在 | 99视频精品全部免费在线 | 久精品视频| 成人欧美一区二区三区 | 宅男色影视亚洲 | 国产男女乱婬真视频免 | 亚洲欧美综合色区 | 特黄三级 | 亚洲成a人片在线v观看 | 欧美怡红院免费全部视频 | 亚洲第成年人电影 | 亚洲国产精品日韩在线观看 | 国产视频精品一区白白色 | 精品国产午夜福利在线观看蜜月 | 日本午夜免费 | 国产精品成人aaaa网站女吊丝 | 网友自拍视频一区二区三区 | 亚洲中文字幕高清有码在线 | 国产在线视频专区 | 国语高清精品 | 日本护士毛茸茸 | 奇米精品视频一区二区三区 | 亚洲欧美日韩自偷自拍 | 国产3344视频在线观看 | 五月丁香激激情亚洲综合 | 国产精品欧美亚洲韩国日 | yes4444视频在线观看 | 国产视频福利一区电影 | 日韩欧美一区二区三区永久免费 | 国产精品偷窥熟女精品视频 | 女厕所撒尿视频免费 | 欧美高清中文字幕综合网 | 欧美日韩国产乱了伦 | 怡红院熟女 | 神马影院手机在线观看 | 97青草最新免费精品视频 | 亚洲国产精久 | 国产精品男人的天堂 | 丰满岳乱妇一区 | 国产日本在线观看网址 | 青青草国产成 | 国产成年精品高清在线观看91 | 在线观看男人的 | 一二三四区 | 中文字幕制服丝袜在线观看 | 欧美日韩国产综合草草 | 色吊丝a | 免费人成在线观看网站免费观看 | 一级免费视频在线观看 | 欧美一区二区三区视频在线 | 亚洲日韩欧美不卡 | 欧美一级成人免费大片 | 亚洲欧美综合视频 | 欧美曰韩 | 午夜a级理 | 欧美日韩国产精品酒 | 国产欧美日韩精品a在线观看 | 91免费国产在线观看尤物 | 一区二区三区四区无限乱码 | 色综合中文字幕色综合激情 | 国产精华 | 免费国人国产免费看片 | 日本高清不卡中文字幕视频 | 色8激情欧| 亚洲综合激情五月丁香六月 | 又大又硬又爽免费视频 | 成人国产经典 | 免费人成在线播放网站 | 区不卡无毒影院 | 成人午夜兔 | 国产婷婷高清在线视频站 | 精品亚洲欧美视频在线观看 | 综合在线亚洲 | 免费h在线观看视频网站 | 三年片大全在线观看免费观看大全 | 老司机在线网站 | 国产精品成人一区二区不卡 | 91天堂а8天堂资源在线官网 | 果冻文化传媒官网 | 国产精品韩国一区二区三区 | 757国产午夜福利在线播放 | 成人午夜视频 | 国产国拍 | 亚洲不卡 | 国产精品网红尤物福利在 | 中文字幕在线永久免费精品 | 亚洲最新国产一区二区三区 | 里啪啦影院大全 | 最新版本直播app | 最新电影电视剧在线观看 | 国产拍在线 | 免免费看 | 欧美亚洲精品久五月亚洲综合婷婷 | 国产色秀精品综合 | 国产又刺激又黄又爽又湿 | 国产日韩欧美综合一区 | 国产一区二区三区免费大片天美 | 又大又长视频一二区 | 有码+日韩+在线观看 | 亚洲精品1区2区3区4区 | 大香伊人中文字幕伊人 | 亚洲人成a在线网站 | 男女xxⅹ爽免费视频 | 日本欧美高清乱码一区二区 | 精品一二三区 | 国产精品自在线拍 | 一区二区三区美女图片 | 国产精品一区二区国产馆蜜桃 | www.亚洲最大夜色伊人 | 两性色午夜视频免费网 | 在线观看亚洲精品一区二区 | 高清影视电视剧在线观看 | 色狠狠一区二区三区香蕉 | 中奖视频在线观看国产 | 日本高清视频不卡 | 国产亚洲欧美日韩在线三区 | 国产女主播在线观看免费观看 | 国产精品亚洲综合一区在线观看 | 理论片在线观看 | 欧美精品免费一区二区三区在线 | 欧洲亚洲国产日韩综合一区 | 精品日韩欧美一区二区在线播放 | 亚洲aaaaa特级 | 日本在线看片网站 | 国产精品秘入口免 | 国产高清在线观看视频一线 | 精品国产免费 | 电视剧大全免 | 欧美精品一区二区男同专区 | 欧美一级精品视频一区 | 国产精品lululu在线观 | 91美女片黄在线观看 | 国产欧美日韩资源在线观看 | 日本免费在线观看视频 | 正在播放国产多p交换视频 日韩成全视频观看免费观看高清 | 日韩亚洲一区二区三区 | 亚洲中文字幕a∨在线 | 色五月日 | 国产午夜亚洲精品不卡在线观看 | 手机高清热播韩剧美剧电视剧 | 4k在线网站| 亚洲国产一区在线观看 | 日产亚洲一卡2卡3卡4卡网站 | 免费中文 | 国产在线精品福利大全 | 黑人巨大性欧美一区二区三 | 亚州精品一区二区三区手机一 | 国产一区三区二区中文在线 | 频精品99 | 国产资源免费观看 | 国产福利观看 | 亚洲精品在看在线 | 欧美阿v高 | 国产女人精品在线直播 | 亚洲欧美日韩国产综合点此进入 | 亚洲第一区欧美日韩 | 粗大的内捧猛烈进出在线视频 | 欧洲亚洲日本 | 成人精品视频一区二区三区尤物 | 免费国外性视频网站 | 欧美巨大黑人极品hd | 老司机在线网站 | 国产精品一区一区 | 亚洲一区二区三区人人 | 亚洲成a人片在线观看高清 在线观看www成人影院 | 亚洲欧美洲成 | 欧美性xxxxx| 日本一区二区在线视频 | 区二区免费网站 | 亚洲国产精品免费在线观看 | 末发育娇| 国产乱子伦农村xxxx | 熟女一区二区国产精品 | 视频在线观看免费网站 | 天黑黑影院免费观看视频在线播放 | 日韩高清免费视频观看 | 午夜欧美福利 | 日韩欧美国产一区二区浪潮 | 观看视频新选择 | 日本高清中文字幕一区二区三区 | 日本精品国产一区二区在线 | 国产又粗又大又长又猛在线视频 | 九色精品高清在线播放 | 一区二区三区四区在线视频 | 99在线精品免费 | 欧美日韩亚洲国 | 成人a级高清视频在线观看 91免费视频网站 | 偷窥清纯综合图区 | 午夜伦伦| 国产精品一区视频 | 免费国产黄线在线观看 | 国内外精品一区二区三区在线观看 | 中文字幕第一页 | 日本免费一区二区三区在线播放 | 亚洲高清不卡在线观看 | 精品国内一区二区三区免费 | 羞羞色院91蜜桃在线观看 | 最新版本直播app | 免费a视频在线观看 | 精品一区二区成人 | 欧美人交a欧美 | 国内自拍视频在线观看 | 亚洲欧美日本a∨在线观看 一区发布 | 在线观看成人影院 | 91看片婬黄大片91挑色 | 亚洲国产精品隔壁老王 | 亚洲天堂2025 | 欧美在线日韩 | 91区国产福利在线观看午夜 | 亚洲中文字幕精品有码在线 | 亚洲第一国产综合 | 日韩高清三级在线观看 | 欧美又粗又大一区二区 | 亚精一区二 | 97精产国品一二三产区 | 日产精品一 | 高清一区二区亚洲 | 最新手机在线电影 | 日韩欧美天堂 | 69精品人人人人 | 一本之道高清 | 亚洲女女女同性video | 另类图区亚 | 福利一区在线观看 | 国产二代与美女酒店在线播放 | 最近中文字幕无吗高清免费视频 | 国产精品亚洲片在 | 国产精品区一区二区三 | 最近中文字幕免费mv视频7 | 亚洲日韩在线中文字幕第一页 | 亚洲人成中文字幕在 | 国产精品综合一区二区三区 | 欧美日韩国产一区国产二区 | 好吊色青青青国产欧美日韩 | 日韩欧美一区二区三区永久免费 | 国产精品永久 | 欧美手机手机在线视频一区 | 欧美日本片一区二区 | 最近更新中文字幕2025视频 | 丁香花在线观看免费观看图片 | 91香蕉在线播放 | 国产亚洲精品第一综合另类 | 在线观看福利影院 | 欧美国产一区二区三区精品 | 国产一级一片免费播放视频 | 伊伊人成亚洲综合人网7777 | 片在线播放 | 日本国产性爱观看视频 | 国精品一区二区三区免费观看 | 国产在线播放免费 | 欧美高清免费精品国产自 | 中文国产欧美不卡 | 日本在线观看 | 国产伦精品一一区二区三区高清版 | 国产亚洲蜜 | 最新电影| 亚洲欧美日韩中文播放 | 亚洲国产欧洲在线一区 | 欧美综合亚洲日韩精品区 | 亚洲国产一区二区在线免费 | 色一情一乱一乱一 | 欧美一区二区三区男人的天堂 | 国产一区成人 | 成年人免费在线看的惊悚动作片 | 中文字幕在线免费专区 | 无人视频在线观看播放免费 | 精品国产午夜福利不卡在 | 亚洲日本国产乱码va在线观看 | 免费a级片在线观看 | 九九线精品视频在线观看视频 | 日韩精品中文一区二区 | 91进入蜜 | 腿露私下 | 中文字幕人成 | 成人免费一区二区三区视频 | 娇妻羞涩交换 | 国产免费一级视频在线观看 | 国产亚洲精品日本亚洲网站 | 国产一区二区不 | 最新免费电影在线播放 | 亚洲日韩乱码中文字幕 | 亚洲国产日韩一级二级三 | 日韩精品一区二区三区四区蜜桃 |