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

金喜正规买球

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
国产在线国偷精品产拍 | 国户一区二区免费视频 | 成人午夜福 | 国产在线一区二区三区四区 | 国产原创精品在线 | 国产剧情自创在线播放 | 亚洲日本在线在线看片4k超清 | 最新好看的电视剧免费在线观看 | 国产午夜亚洲精品不卡免下载 | 亚洲美精品二区性爱 | 999在线观看国产 | 蜜芽va亚洲 | 国产大陆亚洲精品国产 | www.俺去也.com影院99 | 亚洲s色大片| 欧美日韩成人精品 | 国产一级精品在线观看 | 亚洲日韩在线精品茄子在线 | 国产99精品 | 在线免费看 | 国产乱理伦片在线观看夜 | 最刺激黄a大片免 | 亚洲天天在线日亚洲洲精 | 欧美日韩国产激情电影 | 一级免费视频在线观看 | 国产特黄特色一级特色大片 | 欧美精品视频在线观看 | 国产aⅴ精品一区二区三区 国产91精品一 | 国产盗摄xxxx | 欧美性xxxx极品高清 | 色妺妺在线视频喷水 | 欧美日韩成人一区二区三区 | 国产在线乱子伦一区 | 免费进入 | 精品国产午夜福利精品推荐 | 国产剧情在线一区观看 | 夜色福利美女曝乳视频 | 国语自产免费精品视频在 | 极品尤物一区二区三 | 亚洲精品aa在线 | 99爱这里只有精品 | 中文有码视频在 | 免费国产一区二区三区 | 亚洲日本aⅴ片在线观看香蕉 | 最新91精品老司机在线 | 成人看片在线观看免费 | 午夜福利一区二区三区在 | 国产又爽又粗又猛的视频 | 强开小嫩苞一区二区三区 | 精品国产拍国产天天人 | 国产欧美一区二区精品每日更新 | 亚洲高清国产拍精品动图 | 成欢阁免费入口在线观看 | 一区二区视频在线观看入口 | 亚洲欧美韩 | 中文字字幕乱码高清二本道资源站 | 欧美亚洲一区二区三区导航 | 日本不卡在线观看 | 91福利国产在线在 | 国产suv精品一区二区62 | 免费电影网站 | 欧美一区日韩二区在线观看 | 国产在线观| 欧美精品一二三区 | 日韩精品中文字幕高清在线 | 国产黄大片在线观看视频 | 亚洲大片在线观看网址 | 一级特黄aaa大片 | 亚洲人精品亚洲人成在线 | 国产啪精品视频网站免费尤物 | 欧美日韩国产中文精品字幕 | 一区二区三区精 | 一区二区免费在线观 | 好吊色妇女免费视频免费 | 精品国产乱码一区二区三区 | 国产精品永久免费自在线观 | 乌克兰18极品xx00喷水 | 国产高清视频免费在线观看 | 欧美视频在线 | 国产伦精一品二品三品 | 中文字幕亚 | 亚洲第一综 | 一区二区视频在线观看入口 | 精品国精 | 国产ol丝袜高跟在线观看不卡 | 国产日韩欧美新地址 | 美女aⅴ高清电影在线观看 国产一区二区三区免费在线 | 国产在线不卡播放 | 亚洲第一免费视频 | 欧美午夜成午夜成年片在线观看 | 热播电影电视剧 | 亚洲日韩国产第一成人 | 欧美日韩午 | 99热精品免费 | 免费国产在线精品一区 | 精品在线一区二区 | 灬大ji巴太粗太长了h | 欧美视频在线观看一区二区 | 2025卡1卡2卡3精品老狼 | 中文字幕一区二区三区 | 久热中文字幕精品视 | 亚洲日韩欧美一区二区三区在线 | 99热精品福利在线观看 | 中文字幕精品视频第一区第二区 | 国产电影免费在线播放 | 午夜福利国产在线观看1 | 黄页网站大全免费视频网站 | 天天国产综合永久精品日韩 | 最新一区二区三区免费看 | 91黑料精 | 日本精品专区在线 | 18以下勿进色禁网站免费看 | 最近中文2025在线观看免费 | 国产国产人视频69免费 | 国产欧美在线综合一区 | 欧美亚洲综合成人专区 | 亚洲91精品一区 | 黄页网址大全免费观看 | 午夜爽爽影院 | 国自产偷精品不卡在线 | a4yy在线播 | 亚洲人成在线观看网站播放 | 好看的中文字幕aⅴ在线视频 | 亚洲一二三区视频 | 青草青草久热精品视频在线观看 | 国产揄拍视频在线观看 | 色999欧美日韩 | 国产在线视频无卡a | 国产天堂亚洲国产碰碰 | 日日插人人插天天插 | 欧美日韩中文在线视频 | 亚洲国产综合一区日韩精品 | 午夜在线电影网 | 66lu国产在线观看 | 性xxx| 思思伊人 | 日国产一区三区三区在线观看 | 欧美精品v日韩精品v韩国精品v | 日韩欧美综合 | 亚洲精品国产精品乱码视色 | 欧美区精品系列在线观看不卡 | 亚洲欧洲日产国码a | 日韩欧美国产一区二区三 | 国产盗摄偷窥在线观看 | 国产在线国偷精品产拍 | 中文字幕亚洲一区二区三区四 | 一二三区理论片 | 国产激情影视综合 | 日干夜干| 日韩欧美精品在线观看视频 | 99热国产在线播放只有精品 | 亚洲精品在线中文字幕 | 国产精品天天看特色大片 | 欧美日韩精品一区二区三区 | 国产初高中生视 | 日韩一区二区三区免费精品 | 亚洲男人天 | 2025最新国产在线看 | 国产精品视频大陆精大陆 | 三区四区 | 精精国产xxxx视频在线 | 亚洲欧洲一区二 | 夜鲁夜鲁很鲁在线视频视频 | 丰满女人又爽又紧又丰满 | 亚洲小说欧美中文在线 | 欧美亚洲视频 | 亚洲一区二区偷拍第一页 | 日本高清免费观看 | 国产直播视频在线播放 | 一区二区三区激情 | 国产亚洲午夜高清国产拍精品 | 欧美日韩一区 | 亚洲国产一区二区试看 | 国产美女在线精品免费观看 | 国产亚洲新免费视 | 日韩免费网站 | 99精品视频免费热播在线观看 | 真人祼交二十三式 | 日本视频网站在线w | 欧美激情国产精品视频一区二区 | 亚洲制服国产一区二区三区 | 在线观看片a免 | 超级乱婬片国语对白 | 欧美日韩精品码免费专 | 啦啦啦免费高清在线观看 | 日韩精品真人荷官 | 日韩欧美视频一区二区三区 | 日本乱理伦片在线观看中文字幕 | 亚洲日韩欧美九 | 欧美日韩一区观看 | 欧美日韩日本中国高清视频在线 | 秋霞国产精品一区二区 | 视频精品 | 伊人五月婷婷 | 中文字字幕在线中文乱码电影 | 亚洲欧美日本a∨在线观看 一区发布 | 国产精品三级在线观看 | 福利吧导航 | 字幕一区在线观看视频 | 国内自拍视频一区二区三区 | 亚欧洲精品在线入口 | 一色屋色费精品视频在线看 | 一区二区三区四区在线不卡高清 | 精品推荐 | 色偷偷国色天香在线观看免费视频 | 国产又大又硬又粗视频 | 欧美日韩国产综合在线小说 | 国产日韩欧美在线观看播放 | 欧美日韩aⅴ一区二区三区 日本二区在线中文字幕 | 3d动漫一区二区 | 婷婷综合亚洲 | 国产精品综合在线观看 | 一级a做一级a做片性高清视频 | 亚洲国产精品成人天堂 | h网站国 | 日韩一区二区三区免费视频 | 区三区在线| 国产又粗又硬又大爽黄老大爷视 | 女同恋性一区二区三区四区 | 国产欧美日韩精品专区 | 国产做a| а√天堂资源8在线官网在线 | 精品国产99国产精偷国产黄在线 | 激情文学综合区图片区小说区 | 国产免费a级特黄的片子 | 国产b站免费版视频 | 一扒二脱三插片在 | 亚洲第成年人电影 | 99视频精品全部国产盗摄视频 | 一本大道久| 亚洲欧美日韩中文国产不卡 | 亚洲国产激情一区二区三区 | 日韩精品中文字幕高清在线 | 99九九免费热在线精品 | xxxxbbbb欧美 | 手机在线看电影的网站 | 国产精品九九九午夜 | 欧美日韩免费一区二区在线观看 | 最近中文字幕在线中文视频 | 日本性爱视频免费看 | 午夜福利精品 | 黄页网站大全免费视频网站 | 亚洲色大成网站www永久 | 日韩18未满禁止观看 | 国语对白精品一区二区在线观看 | 网站视频福利 | 一级特黄aa大片欧美 | 欧美国产精品 | 特级婬片国产高清视频 | 丰满大码的熟女在 | 最新热播电影大全 | 日韩a在线 | 欧美精品视频免费观看 | 忘忧草日本高清频道 | 免费午夜伦费影视在线观看 | 中文字幕人成人乱码亚洲影 | 日韩一区二区三区四区中文字幕 | 岛国大片在线一 | 亚洲欧美日韩在线一区二区三区 | 免费观看一级特黄欧 | 欧美无极品在线观看 | 精品日本亚洲专区 | 秋霞理伦韩国在线电影 | 精品国产一区二区三区免费 | 欧美日韩国语aⅴ视频网站 国产高清自偷自 | 老师喂我乳我脱她内裤 | 国产又黄又大又粗的视频 | 国产精品自产拍在线观看花钱看 | 亚洲中文娱乐网在线观看 | 午夜福利在 | 爽黄的免费视频 | 日本一卡二卡三 | 女同另类国产精品视频 | 午夜区一区二区在线观看 | 明星合成 | 最近更新在线中文字幕 | 免费国产va在线观看视频 | 日韩欧洲区精品一区二区 | 国产ol丝袜高跟在线观看不卡 | 乱码视频午夜在线观看 | 亚洲欧美小说 | 欧美日韩国产一区三区 | 日本最新伦中文字幕 | 国产偷精品免费观看 | 亚洲精品影院一区二区 | 免费人成在线观看网站品爱网 | 国产高清在线观看视频一线 | 欧美日本一区二区三区在线 | 国产真实 | 日韩欧美国产精品亚洲二区 | 欧美日韩在线第一页 | 日韩精品电影 | 大地资源中文第二页高清 | 插我一区二 | 女教师巨大乳孔中文字幕 | 91精选国产大片 | 国产日本欧美在线一区二区 | 国产盗摄偷窥在线观看 | 果冻传媒视频在线 | 91啪国自产最新91啪国自产 | 亚洲免费在线观看一区二区 | 在线精品国产一区二区三区 | 男人tv天堂精品一区二区 | 在线观看午夜亚洲一区 | 日韩亚洲人成影院 | 国语高清精品 | а√天堂资源在线官网 | 国产人成网在线播放va | 精品视频一区二区 | 激情中文一区二区三区四区 | 日韩成人中文字幕在线观看 | 国产免费人成视频在线观看播放 | 综合狠狠 | 国产盗摄精品一区二区三区 | 了解最新38在线信息 | 欧美交换配乱 | 国产日韩a视频在线播放视频 | 日本午夜免a费看大片中文4 | 欧美一区二区三区免费 | 不卡无在线一区二区三区观 | 亚美影院 | 国产精品无需播放器在线观看 | 亚洲经典日韩欧美国产一区 | 亚洲成熟女人毛毛耸耸多 | xxxx性欧美极品v | 国产免费v片在线观看完整版 | 午夜丁香婷婷免费手机在线观 | 一级a一片在线播放国产 | 国产精彩视频一区二区在线观看 | 激情国产原创在线观看 | 国产99视频精品免费看 | 日韩在线观看视频 | 日本96在线精品视频免费观看 | 国产精品人妇一区二区三区 | 精品一区二区三 | 亚洲aⅴ男人的天堂在线观看 | 91精品福利| 国产点击进入在线 | 偷自拍亚洲视频在线观看99 | 国产一级午夜大片 | 在线中文字幕不卡视频 | 欧美亚洲视频一区 | 国产一区欧美亚洲 | 亚洲人成电影在线小说网色 | 国产免费私拍一区二区三区 | 国产小视频在 | 国产拍揄自揄免费观看 | 在线观看国产精选免费 | 欧美激情一区二区三区高清视 | 99国产综合视频在线播放 | 最近2025年好看中文字幕视频 | 亚自拍洲自拍1页 | 亚洲日韩国产欧 | 国产国产乱片在线播放 | 伦理大片在线观看 | 国产在线观看免 | 给我免费播放片国语电影 | 国产乱码精品一区三上 | 国产中文字幕在线点播 | 99精品视频在线视频免费观看 | 国产在线精品香蕉综合网一区 | 日韩视频在线观看网站资源 | 伦理片午夜视频在线观看免费 | 免费看男人j放进女人p的视频 | 国产一级特黄aaa大片在线观 | 在线成人亚洲一区电影 | 91福利电影| 人人看人人拍国产精品 | aⅴ在线视频男人的天堂 | 免费人成网站在线免费观看 | 国产超污精 | 尤物视频免费观看 | 国产二代与美女酒店在线播放 | 欧美日韩aⅴ一区二区三区 日本二区在线中文字幕 | 日韩精品人 | 日本黄大片在线观看视频 | 国产精品综合影院在线观看 | 欧美另类69xxxxx在线观看 | 91大神在线资源观看无广告 | 欧美一卡2卡3卡4卡新区 | 国产免费一级高清 | 午夜福利在线观看亚洲一区二区 | h网站国 | 天下第一日本在线观看视频 | 丝袜亚洲日韩另类 | 妹子干综合 | 亚洲午夜视频在线观看 | 一边喂奶一边被爱 | 国产精品成年片在线观看 | 日韩精品欧美激情国产一区 | 欧美日韩在线播放成人 | 成人品观看免费 | 91直播在线观看免费 | 亚洲欧美日韩中文字幕二区 | 国产高清精品一区 | 山外人精品影院 | 日本爽p大片免费观看 | 99国产精品这里只有精品 | 国产在线拍揄自揄拍免费下 | 日本视频在线观看不卡高清免费 | 最新电视剧免费在线观看 | 1区2区日韩欧美国产 | 91福利在线观看视频 | 成年人在线免费观看视频 | 亚洲偷偷自拍高清 | 欧美影院一区二区三区 | www亚洲欲色成 | 国产一区二区三区亚洲 | 开拓亚洲色偷偷偷综合网的同时 | 怡红院免费的全部视频 | 国产高清一区二区三区四区 | 国产精品永久 | 亚洲无卡免费 | 99香蕉国产线观看免费 | 国产在线成本人视频摸腿 | 五月综合 | 91精品国产自 | 97在线视频免费观看视频免费 | 小姨子在旁边差点被看到 | 综合久青草视频 | 99精品无人区乱码在线观看 | 亚洲高清一区 | 天堂亚洲日韩专二区 | 精品国产福利片在线观看 | 日本最新在线一区二区 | 国产亚洲欧美日韩在线看片 | 精品国产一区二区三区不卡 | 国产福利不卡在线观看 | 一区二区三区成人 | 精品国产乱子伦一区二区三区 | 国产精品亚洲精品五月 | 亚洲综合国产在不卡在线首映 | 亚洲永久 | 欧美影视 | 一区二区日韩视频九一蜜桃 | 拍国内精品老妇 | 亚洲欧美综合人成在线 | 国产精品黄页免费高清在线观看 | 玖玖免费视频在线观看 | 亚洲+欧美+国产 | 国产日韩欧美 | 校园春色亚洲 | 国产国产精品人在线视 | 91手机国产在线网站 | 99精品成人高清在线观看 | 国产系列丝袜熟女精品网站 | 国产一区二区三区不卡在线看 | 99精品国产福利在线观看 | 国产在线va无卡 | 日本最新在线一区二区 | 欧美日韩一道免费中文字幕新视频 | 伊人热热精品中文字幕 | 免费版在线观看 | 一区二区三区亚洲高清 | 他扒开我小泬添我视频 | 欧美一区二区三区精品视频在线 | 山外人精品影院 | 日韩欧美中文字幕一区二区三区 | 免费动漫网站 | 国产欧美在线免费观看 | 国产主播一 | 久热这里只有精品无 | 片老司机| 青青草中文字幕在线观看 | 欧美激情全球免费视频 | 免费高清电影大全 | 91精品国产免费青青碰在线 | 国产网红刘婷在线视频 | 美国成人影院 | 99视频在线精品免费观看6 | 亚洲愉拍自拍另类 | 欧美视频在线第12页 | 高清一区二区亚洲 | 级a毛一级a看免费视频 | 亚洲欧美在线观看片不卡 | 播放国语介绍动漫更新视 | 日韩欧美亚洲国产永久在线观看 | 91高清免费国产自产拍不卡 | 18毛多| 国产激情视频网站 | 99精品国产高清一区 | 99久热国产精品视 | 性欧美乱妇高清come | 国产高清a| 夜夜夜精品视频 | 伊人影视在线观看日韩区 | 国产乱理伦片在线观看夜 | 亚洲国产精品成 | 91九色老熟女免费 | 亚洲精品在线免费观看 | 国产午夜男女爽爽爽爽爽视频 | 亚洲经典一区 | 亚洲韩国欧美一区二区三区 | 西瓜影音免费 | 国产欧美日韩一区二区三区在 | 重口视频二区在线观看 | 自拍偷自拍亚洲 | 一线路二 | 欧美激情办公室aⅴ | 日韩精品亚洲a | 日韩美女三级视频 | 综合欧美国产视频二区 | 国产精品永久免费 | 亚洲亚洲人成网站在线观看 | 视频一区二区三区 | 免费中文字幕视频2025一页 | 欧美乱妇日本无乱码特黄大片 | 国内精品自产拍在线观看 | 欧美人与牲禽ⅹxxx伦交 | 精品国产福利在观看91啪 | 爱情岛亚洲论坛 | 欧美日韩亚洲国产综合在线观 | 欧美一级大黄特黄 | 91羞羞网站 | 国产精品一区二区公司 | 国产福利在线观看永久免费 | 色哟哟网站入口在线观看视频 | 色橹橹欧美在线观看视频高清 | 精品国产免费人成在线观看 | 日韩一区二区三区免费视频 | 国产一区二区三区免费大片天美 | 国产美女淫秽一区二区三区 | 国产亚洲精品 | 高清影视电视剧在线观看 | 国产精品综合影院在线观看 | 亚洲高清无在码在 | 欧美激情视频在线播放全球共享 | 在线观看亚洲一区二区三区 | 国产欧洲精品自在自线官方 | 国产亚洲欧美日韩一区图片 | 91干屁眼视频 | 视频在线一区二区三区 | 亚洲精品中文字幕不卡 | 情趣内衣美女 | 亚洲aaaaa特级 | 日韩国产| 日韩精品中文字幕在线 | 中文字幕不卡在线观看 | 色一情一乱一伦 | 免费在线观看a视频 | 一区二区三区在线视频不卡 | 中文字幕在线观看一区二区 | 亚洲精品免费 | 精品国产一区二区三区不卡在 | 国产一区不卡在线观看 | 日韩视频高清欧美一区 | 国产又粗又猛 | 亚洲欧美另类激情综合区蜜芽 | 国产精品欧美一区二区三区 | 精品国内自产拍在线观看 | 成+人+亚洲+综合天堂 | 中文字幕亚洲综合小综合 | 91视频免费观看 | 亚洲免费在线视频观看 | 国产福利不卡免费视频在线观 | 精品乱子伦一区二区三区 | 人人玩人人添人人澡免费 | 国产精品成人一区二区三区影院 | 日韩欧美性爱精品一区二区 | 国产精品视频大陆精大陆 | 国偷盗摄自产福利一区在线 | 中文字幕日韩有码 | 欧美成亚洲| 欧美超高清xxxhd | 超国产人碰人摸人爱视频 | 1区2区3区高清视频 色老大综合 | 黑人性较视频免费视频 | 99热这里只有精品免费播放 | 欧美在线精品视频二区 | 国语自产精品视频熟女 | 精品国产高清自在线一区二区 | 国产亚洲欧美日韩综合另类 | 日韩精品午 | 2025国产精品视频免费 | 91精品国产品香蕉在线 | 欧美日韩在线视频制服 | 国产精品+日 | 日本一本免费线观看视频 | 国产一区二区三区在 | 欧美日韩综合在线播放 | 在线观看中文字幕2025 | 影视大全网| 国产免费爽爽视频在线观看 | 国产乱子伦农村xxxx | 无人视频在线观看免费播放影院 | 日日噜噜夜夜狠狠va | 欧美国产激情二区三区 | 欧美69视频在线观看 | 国产在线观看91精品2025 | 日韩大片高清播放器 | 天美麻花星空视 | 日韩精品一区二区三区四区蜜桃 | 午夜国产在线一区二区三区 | 国产网红主播 | 在线天堂中文最新版www网 | 日韩精品午夜视频一区二区三区 | 国产又大又粗又长免费视频 | 国产精品成人va在线观看 | 亚洲欧美日韩中文另类不卡 | 亚洲色精品一区二区三区 | 亚洲日本欧美日韩髙清观看 | 九九在线精品视 | 国产精品免费视频能看 | 欧美野人三级经典在线观看 | 国产亚洲综合一区柠檬导航 | 日本一级a大片在线观 | 亚洲成年人网 | 高清在线播放不卡 | 娇小teen乱子| 在线日产精品一区 | 国产免费不卡一区在线视频 | 成年免费大片黄在看 | 三年片在线观看免费大全电影 | 国产午夜福利在线观看视频 | 亚洲国产欧美日韩一区二区在线 | 美女黄频| 国产日韩综合一区在线观看 | 日韩专区视频 | 欧美另类69xxxxx极品 | 激情欧美日韩一 | 福利一区二区 | 亚州欧美自拍另类欧美 | 97超视频在线观看视频在线 | 欧美综合视频在线观看 | 大陆aⅴ国 | 九九九全国免费视频 | 一本精品一区二区在线观看 | 成人拍拍拍免费视频网站 | 一区两区三区四区乱码国产精品 | 精品欧美一区二 | 日韩欧美一区二区三区精品 | 欧美综合在线观看日本 | 99视频精品全部免费在线 | 亚洲中文字幕在线停止 | 欧美日韩国产一区 | 日韩欧美一区二区三区综学生 | 国产欧美精品亚洲日本一区 | 国产伦精品一区二区三区 | 国产一区二区三区美女 | 97se亚洲国产综合自在线观看 | 精品欧美一区二 | 中文字幕日韩欧免费视频 | 欧美日韩欧美 | 福利电影大全 | 日产精品卡二卡三卡四卡乱码视频 | 综合图区亚洲 | 在线一区二区三区中文字幕 | 最近最新中文字幕在线第一页 | 九九国产视频 | 色屁屁一区二区三区视频国产 | 悠久影视网网 | 老司机深夜免费福 | 亚洲国产aⅴ成人精品无吗 337p日本人体 | 欧美成妇人吹潮在线播放 | 国产真实迷奷 | 日本乱码一区二 | 日本中文字幕第 | 亚洲s色大 | 国产成年精品高清在线观看91 | 欧美成视频无需播放器 | 手机看片福利一区二区三区 | 国产精品偷伦视频免费观看了 | 中文字幕一区二区三区免费视 | 国产精品免费一区二区三区 | 欧美特一级| 日韩在线精品一区二区三区 | 日本不卡一区二区三区 | 国产精品露脸国 | 欧美亚洲一区二区三区 | 欧洲成人免费高清视频 | 国产曰韩 | 精品一区二区三区密臀在线 | 日韩欧美中文字幕在线视频 | 国产精品另 | 国产第二页页在线播放 | 国产黑色丝袜在线观看下 | 国产一级a毛做免费视频 | 三年片中国在线观看免费大全 | 国产片第一福利片 | 亚洲日韩色在 | 国产午夜福利在线观看污 | 中文字幕国产一区 | 国产一级精品精冻电话 | 免费人成大片在线播放 | 国产伦精品一区二区三区精品 | 国产精品日韩 | 中文字幕精品视频在线观看 | 国内高清久 | 91视频网站| 国产女优一区二区在线观看 | 热门好看动漫综艺 | 亚洲男人的| 自偷自拍三级全三级视频 | 成人69激情视频在线观看 | 国产综合一 | 亚洲一区二区三区免费视频 | 欧美一区二区电影免费观看 | 韩国欧美一区二区 | 国产一区中文字幕 | 热门电视剧免费在线观看 | j8又粗又大又长又爽又硬电影 | 国产精品无 | 国产欧美一区二区三区户外 | 亚洲精品美女偷拍一区二 | 欧美亚洲国产日韩精品在线观 | 亚洲老妈激情一区二区三区 | 在线日本看片免费人成视久网 | 免费a级网站 | 久9视频这里只有精品试看 经典影片免费在线观看 | 最新日本一道免费一区二区 | 国产男女动作视频在线91 | 亚洲欧美中 | 国产午夜福利不卡在线观看 | 又大又粗又黄又硬又爽又免费视 | 亚洲欧美国产精品一区二区 | 亚洲欧美日韩国产精品 | 国产系列 | 国产盗摄偷窥在线观看 | 激情97综合亚洲 | 精品欧美视频第二页在线观看 | 欧美日韩一区不卡 | 国产在线观看精品国产 | 欧美精品自拍一区 | 娇小videodes极 | 亚洲国精产| 国产网红刘婷在线视频 | 日韩在线成年视频人网站观看 | 亚洲成a人片在线观看 | 一级a一片在线播放国产 | 国产精品专区第5页 | 在线观看精品国产 | 在线看片日韩 | 免费国产h视频在 | 三区在线观看不卡 | 在线观看国产一区二区三区 | 日本成人频道一区二区三区 | 国产精品亚洲综合一区在线观看 | 色与欲影视天天影视 | 91豆奶app| 国产日韩欧美亚洲 | 亚洲一区不卡视频 | 亚洲欧美日韩高清综合678 | 日韩女同在线二区三区 | 精品国产一区二区三区 | 91精品啪国产在线观看免费牛牛 | 国产片免费 | 国产女人精品在线直播 | 国产女主播精品大秀系列 | 国产精品黄页免费高清在线观看 | 精品国产一区二区三区国产 | 亚洲欧美一区二区三区 | 99精产国品一二三产品香蕉 | 日本高清一区 | 国产午夜男女爽爽爽爽爽视频 | 在线视频有码国产欧美 | 日韩精品另类天天更新影院 | 精品国产a| 豆国产97在线 | 国内精品视频成人一区 | 羞羞视频在线观看 | 日本免费看黄 | 国产放荡对白 | 国产在线视频国产 | 日本黄页网站大 | 亚洲人和日本人 | 一区二区免费高清在线观看国产 | 欧美日韩在线一区二区三区 | 日本一区二区在线观看精品 | 国产永久精品一区二区污污 | 国产欧美亚洲精品 | 国产丝瓜 | 国产免费一级视频在线 | 91精品乱码一区二区三区 | 午夜福利在线播放欧美 | 亚洲精品视频自拍偷拍 | 亚洲精品vs中文字幕白桨 | 国产精品亚洲精品五月 | 青草精品 | 中文字幕亚洲日韩第一页 | 福利理论片 | 日产精品卡二卡三卡四卡乱码视频 | 国产日b视频在线观看 | 国产在线精品香蕉综合网一区 | 欧美日韩一区二区不卡在线播放 | 在线观看午夜福利片日本 | 午夜福利在线观看亚洲一区二区 | 真实国产熟睡乱子伦视频 | 97人人超人人超国产免费 | 国产免费一区二区 | 欧美性黑人极品hd另类 | 亚洲综合一区三区 | 日产亚洲一区二区三区 | 国内自拍一二三四2025 | 欧美日韩国产在线一区 | 一本大道香蕉在线 | 精品区一区二区三 | 精品一区在线观看 | 国产精品视频丁香花综合 | 在线视频韩国 |