超碰91资源站-超碰97豆花-超碰97人妻-超碰97人人干-超碰97人人香蕉-超碰97天天操-超碰97在线资源站-超碰97资源站共享-超碰97资源站总站-超碰aa在线91-超碰av操-超碰爱爱

半岛外围网上直营

Silverlight DataGrid中增加AutoCompleteBox列的方法

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

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

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

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

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

<data:DataGrid.Resources>  

<DataTemplate x:Name="currencyDataTemplate">  

 <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 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
        
          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 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 = (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 a DependencyProperty as the backing store for ValueMemberPath.  

This enables animation, styling, binding, etc...
  public static readonly DependencyProperty ValueMemberPathProperty =
              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); }
         }

          // 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); }
         }

          // 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));

          private static void OnMemberPathPropertyChanged(DependencyObject d, 

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

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

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

          private static 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

          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" Width="SizeToHeader"/>

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


標簽:

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

文章轉載自:網絡轉載

為你推薦

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


添加微信 立即咨詢

電話咨詢

客服熱線
023-68661681

TOP
利記足球官網(官方)網站/網頁版登錄入口/手機版登錄入口-最新版(已更新) 真人boyu·博魚滾球網(官方)網站/網頁版登錄入口/手機版登錄入口-最新版(已更新) 最大網上PM娛樂城盤口(官方)網站/網頁版登錄入口/手機版登錄入口-最新版(已更新) 正規雷火競技官方買球(官方)網站/網頁版登錄入口/手機版登錄入口-最新版(已更新) 雷火競技權威十大網(官方)網站/網頁版登錄入口/手機版登錄入口-最新版(已更新) boyu·博魚信譽足球官網(官方)網站/網頁版登錄入口/手機版登錄入口-最新版(已更新) 權威188BET足球網(官方)網站/網頁版登錄入口/手機版登錄入口-最新版(已更新) 正規188BET足球大全(官方)網站/網頁版登錄入口/手機版登錄入口-最新版(已更新) 国产av福利久久精品无码动漫 | 韩国无码av片在线观看网站 | 国产综合在线视频一区二区 | 国产三级自拍亚洲色欲色欲 | 丰满多毛少妇做爰视频 | 国产日韩午夜毛片电影完整版 | 国产无码一区二区三区 | 国产91对白在线播放边 | 成人午夜精品久久久久久久 | 国产人妻精品久 | 国产精品原创巨作av无遮挡 | 国产成本人免费视频 | 高清av熟女一区 | av网免费| 粉嫩av无码一区二区三区软件 | 福利在线一区 | 2025在线精品自 | 国产黄网站 | 国产精品无码专区在线播放 | 成人国产精品一区二区网站! | 91进入蜜桃臀在线播 | 国产精品无码免费视频二三区 | 国产精品柳州莫菁 | 国产在线视频欧美一区 | 国产精品国产三级大全在线观看 | 国产亚洲精品久久久无码 | 99久久国产精品免费一区二区 | 国产av大陆精品一区二区三区 | 国产情趣网站视频在线观看 | 91精品无码久久久久久久久 | 国产精品白浆无码99久久 | 国产91丝袜美腿在线观看 | 国产在线观看av | 国产另类精品 | 国产精品熟女视频一区二区 | av无码精品一区二区三区 | 精品国产一区二区在线 | 91桃色午夜福利国产在线观看 | 国产精品久久久久久久久久日本 | 国产精品国产三级国产普通话99 | 91美剧网| 91尤物在线精品 | 精品无码一区二区三区不卡 | 国产日韩欧美精品先锋 | 91露脸的极品国产系列高清 | 国产成人午夜福利在线播放 | 国产精品制服丝袜视频 | 超薄肉色丝袜一区二区 | 国产人妻高清国产拍精品 | 国产美女精品aⅴ在线 | 国产av成人一区 | 18禁日本黄无遮挡禁免费网站 | 国产丝袜美女一级二级三级 | 成人亚洲欧美日韩在线 | 国产av高清怡春院ww8 | 高清精品一区二区三区 | 国产成人精品自在线拍 | 91精品国久久久久久无码 | 国产人妻久久精品二区三区特黄 | 国产成人午夜福利小久久久 | 97色伦97色| 成人综合伊人五月婷久久 | 国产精品毛片无码一区二区 | 国产精品一区二区三区极品 | 懂色一区二区二区av免费观看 | 国产高清情侣高潮露脸 | 国产高清精品入口麻豆 | 成人午夜免费视频免费看 | 国内国外精品一区二区 | 国产美女精品a | 18禁无遮挡羞羞啪啪免费网站 | 国产成人精品一区二区三区免费 | 国产91高潮流白浆在线播放 | 国产精品成久久久久三级四虎 | 国产成人无码av一区二区在 | 91成人在线 | 成人国产精品一区二区视频 | 国产精品一级二级 | 国产精品丝袜亚洲熟女 | 成人亚洲国产欧美另类 | 精品人妻少妇av一区二区三区 | 国产成人综合在线 | 国产高清在线精品一区app | 国产亚洲欧美在线播放网站 | 国产主播剧情演绎在线观看 | 福利视频一区二区三区 | 91精品成人无码久久不卡 | 99精品全国免费观看视频.. | 精品日韩亚洲av无码 | 国产精品成人av片免费看网站 | 国产精品偷伦视频观看免费 | 国产日韩欧美另类重口在线观看 | 国产va在线观看 | 成年女人毛片免费播放人 | 动漫av永久无码精品每日更新 | 国产成人精品a视频一区 | 2025最新无码免费 | 精品欧洲av无码一区二区14 | 国产精品伦理在线 | 91久久精品一区二区三区 | 国产精品嫩草影院一二三区入口 | 国产午夜精品福利一区久久久 | 91福利国产在线在 | 成人国产精品秘果冻传媒在线 | 国产肥熟女视频一区二区视频 | 91网站中国电影av欧美 | 国产亚洲欧美观看在线一区 | 国产精品国语对白露脸在线播放 | 国产综合无码一区二区辣椒 | 国产精品99无码一区二区视频 | 18精品久久久无码午 | 激情久久av一区av二区av三区 | 丰满少妇三级全黄 | 高清不卡一区二区三区 | 国产自产视频 | 精品系列无码一区二区三区 | 国产三级精品视频 | 国产高清一卡2卡3卡4卡乱码 | 国产无码精品a级在线 | 国产v无码专区亚洲v手机麻豆 | 国产极品美女高潮抽搐免费网站 | 国产成人综合久久精品推荐 | 国产成人综合亚洲精品 | 精品午夜在线观看 | 国产成人无码精品一区二区三区 | 精品久久久久久久无码人妻热 | 国产无码免费的中文字幕 | 91精品日韩| 白嫩少妇激情无码久久 | 国产a精彩 | 国产一区二区免费在线 | 国产va欧美va在线观看 | 国产97视频在线观看免费 | 国产aⅴ精品一区 | 国内精品久久无码人妻影院 | av在线无码专区一区 | 国产一区二区精品网站麻豆 | 国产成人午夜福利电影在线播放 | 国产成人免费片在线视频观看 | 粉嫩av无码一区二区三区软件 | 成人在线视频高清无码不卡 | 国产精品偷伦视频免费观看 | 国产精品香蕉自产拍在线观看 | 18成禁人视频免费午夜影视 | 国产精品天干天干 | 不卡国产丝袜在线观看 | 国产精品乱码久久 | 97人妻久久公开视频 | av午夜精品在线观看 | 国产色无码精品视频免费 | 国产999视频在线播放 | 精品久久人妻av中文字幕 | 国产91精品久久久久久久 | 国产一级av毛片国语对白 | 国产偷情精品视频 | 加勒比一本大道香蕉av | av片在线观看永久免费 | 国产午夜精品一区二区三区 | 91国语精品自产拍在线观看一 | 国产精品毛片一区二区三区 | 成人国产欧美大片一区 | 91精品第一国产综合精品 | 99久久精品久久久久婷婷 | av天海翼| av免费不卡国产观看 | 国产一区二区三区三区 | av资源网 | 国产三级电影免费看 | 国内精品伊人久久久av高清影 | 国产av久久免费观看 | 国产毛片一区二区精品 | 丰满人妻跪趴高撅肥臀 | 精品无码一区在线观看 | 91精品一区二区三区在线观看 | 国产日韩精品一区二区 | 国产精品视频全国免费 | 国产精品白丝喷水在线观看 | 国产精品日韩精品久久蜜桃 | 成在线人午夜剧场免费无码 | av人摸人人人澡人人超碰妓女 | 国产三级在线免费观看 | av中文字幕无码免费看 | 丰满人妻熟妇乱又伦精品视频三 | 国产精品一区二区免费在线观 | 国产av永久精品无码 | 国产波霸爆乳一区二区黄色 | 国产成人精品男人的天堂网站 | 国产av一区二区三区久久浪潮 | 成人无码潮喷视频 | 国产精品蜜桃在线观看 | 91麻豆最新在线人成免费观看 | 成年女人免费视频播试看 | 99精品视频在线观看免费 | 国产精品另类 | 国产三级在线视频播放线 | 成人无码动漫在线观看 | 国产成人综合亚洲av网站 | 国产在线观看无遮挡无码aⅴ多人 | 囯产精品久久久久久av三级 | 韩国免费理论片在线观看 | 国产精品无码素人福利 | 精品无人乱码一区二区三区 | av永久天堂一区 | 国产精品日韩欧美在线第3页 | 国产在线尤物不卡ab网站 | 国产日韩欧美另类重口在线 | 国产麻豆精品原创 | 国产精品免费观在线 | 国产成人久久精品麻豆二区 | 国产精品好吊一区二区三 | 国产尤物aⅴ在线观看不卡 国产尤物av尤物在线看 | 国产在线观看福利 | 精品国产乱子伦一区二区三区58 | 国自产拍高清精品 | 国产成人无码播放 | 国产精品草草在线观看 | 国产无码在线观看免费在 | 国产欧美日产综合 | 精品国产福利在线观看不卡 | 国产爆乳无码视频在线观看3 | 国产精品日韩欧美一区2区3区 | 精品日韩av一区二区三区 | 国产午夜无码喷水福利在线观看 | 国产午夜视频在永久在线观看 | 91尤物在线精品 | 国产91福利精品免费观看 | 国产精品大陆高清 | 国产熟睡乱子伦视频在线播放 | 国产欧美综合在线 | 国产自在自线午夜精品视频 | 国精产品一区二区三区糖心 | 国产成人a亚洲精v品无码 | 成人国产精品视频 | 国产成人18黄网站在线观看 | 18禁无遮挡国产免费观看 | h无码无修动漫在线观看 | 国产高清制服丝袜视频 | 国产高清av内谢 | 国产指交视频在线观看 | 国产成人啪午夜精品网站男同 | 国产高清国际精品福利色噜噜 | 18处破外女出血在线 | 91在线无精精品秘?入口 | 国产高清精品亚洲一区二区三区 | 国产精品毛片va一区二区三区 | 国产成人无码a片免费男男中文 | 国产a级毛多妇女视频 | 国产精品国产三级国产av主播 | 国产在线秘麻豆精品观看 | 国产免费一区二区三区免费视频 | 国产专区亚洲欧美另类在线91 | 国产一区二区内射最近更新 | 国产激情视频在线观看 | 国产综合日本影视 | 按摩已婚人妻中文字幕[猫腻] | 国产成人综合激情 | 成年站免费网站看v片在线 成年作爱免费视频视频 | 国产精品va在线观看老妇女 | 国产免费人视频在 | 国产精品一区二区在线观看 | 精品国产欧美一区二区三区成人 | 成人无码av一区二区三区 | 国产成a人亚洲精品v品无码 | 国产精品色午夜小视频 | 国产精品一区亚洲一区天堂 | 国产精品国产国产aⅴ | 精品动漫一区二区无遮挡 | 国产高清精品一区二区不卡 | 91国语精品福利自产拍 | 韩国美女精品一区二区三区 | 精品久久久无码人妻中文字幕 | 2025国产拍一区二区精品 | 国产成人av第一页 | 国产成人久久精品流白浆 | 精品日韩欧美亚洲 | 国产3级在线观看 | 变态另类一区二区sm | 国产一区二区三区电影 | 国产成人亚洲精品无码电影 | 国产日韩久久久久无码精品 | 精品成人免费一区二区三区 | 国产亚洲成归v人片在线观看 | 国产丝袜视频在线影院 | 国产盗摄视频一区二区 | 国产一区二区三区四区五区视频 | 国产美女一级在线观 | 国产精品制服一区二区 | 国产无套粉嫩白浆内精在线观看 | 精品国产福利一区二区在线 | 99久久婷婷国产综合亚洲 | 国产中文字字幕一级毛片 | 国产精品va在线观看无码电影麻豆 | 97色小说天天射免费视频 | 操老逼欧美一区二区 | 18禁无遮拦无码国产在线播 | 国产无码电影一区二区三区 | 国产精品一区二区久久久久久 | 91精品国自产拍在线观看 | 91精品极| 国产成人无码av片在线观看不卡 | 国产成人精品高清在线观看 | 高清精品一区 | 国产亚洲成av人片在线观黄桃 | 国产精品高清网站 | 国产日韩久久久久精品院 | 精品国产乱码91久久久久 | 国产精品日韩欧美一区二区视频 | 2025自拍偷区亚洲综合第一页 | 国产精品午夜理论片在线播放 | 国产产在线精品亚洲aavv | 国产成人综合久久精品最新 | 国产日韩欧美一区二区三区综合 | 国产成人羞羞电影 | av无码小缝喷白浆 | 国产美女激情作爱网站 | 91精品人妻一区二区三区蜜桃 | 18禁裸乳无遮挡自慰免费 | 爆乳无码av一区二区三区 | 国产成人免费高清在线观看 | 91se在线看片国产免费 | 国产成人狂喷潮在 | 成人区人妻精品一区二区不卡网站 | 国产一区二区三区观看 | 国产午夜在线免费视频 | av网站永久| 国产99精品久久 | 精品国产一级精品毛片基地 | 国产成a人亚洲 | 国产一区二区三区三区 | 国产午夜精品精品视频一2025 | 18禁无遮挡羞羞污污污污免费 | 国产精品成人va在线观看软件 | 国产成人精品第一区二区三区 | 国产精品成人av片免费看网站 | 国产欧美日本一区二区三区免费 | 国产成人久久婷婷精品流白浆 | 国产精品大陆第一页 | 国产无内肉丝精品视频 | 国产成人精品一区二区三区在线 | 国产成人麻豆亚洲综合无码精 | 国产野模私拍视频一区二区 | 成人区精品一区二区毛片不卡 | 18禁免费av日韩av高清 | 囯产精品一区二区免费在线观看 | 国产精品无码卡 | 国产精品日本欧美一区二区 | 国产一本一道久久香蕉 | 国产成人免费高清激情视频 | 91精选日韩综合永久入口 | 国产综合无码一区二区色蜜蜜 | 国产美女口爆吞精一区二区 | 国产人妻久久精品二区三区特黄 | 国产成人啪精品视频免费a 国产成人啪精品视频免费软件 | 潮喷失禁调教sm在线 | 2025最新国产在线人成 | 国产高潮白浆一区二区在线 | 国产优优a片在线观看 | 69或成本人午夜在线观看视频 | 国产亚洲成人精品久久久久无码av | 99亚洲国产精品色一区二区三 | 精品毛片久久久久久一 | 国产色噜噜视频在线 | 精品少妇熟女一区二区 | 国产在线观看福利一区二区 | 国产自无码| 国产超级a在线播放久日本 国产超级va在线观看 | av色蜜桃一区二区三区 | 97人妻在线视频网 | 国产喷潮在线播放一区 | 极品少妇爆乳无码av地味 | 国产午夜无码片在线观看 | 成人午夜精品久久久久久久小说 | 91av免费在线观看 | 91亚洲精品自产拍在线观看 | 91久久精品国产91 | 国产精品爆乳奶水无码视频免費 | 成人免费ā片在线观看 | 韩国美女爽快一级毛片免费观看 | 国产女人在线观看 | 国产99日韩精品第一页 | 国产精品麻豆久久一区无码片 | 国产偷窥熟女精品视频大全 | 国产精品视频免费一区二区三区 | 国产av电影区二区三区曰曰骚网 | 国产精品久久久精品app | 国产麻豆视频免费在线观看 | 国产午夜福利大尺度在线观看 | 动漫洲国产精品无码专区2d | 成人免费无码大片a毛片视频 | 国产精品一七六九在线是免费 | 国产福利小视频在线播放 | 91精品无码久久久久久久久 | 国产最爽的aⅴ片在线观看 国产最爽的av片在线观看 | 国产一区高清视频在线观看 | 91麻豆成人久久精品 | 精品国产一区二区二三区在线观看 | 国产午夜视频在 | 国产成人一区二区三区综合区 | 国产精品无码一区二区三区电影 | 国产精品一国产精品免费 | 1024国产精品自拍 | 91大神在线精品网址 | h无码精品动漫在线观看免费 | 91精品国产福利在线观看麻豆 | 成人在线一区二区三区 | 国产一区二区免费 | 91亚洲中文天堂 | 69式无码视频在线观看免费 | 国产97视频 | 精品亚洲一区二区三区在线 | 高潮激情视频 | www国产在线 | 国产精品区一区二区三在线播放 | 精品人妻无码一区二区三区在线 | 国产精品成人影院在 | 成人国产精品一级毛片视频毛片 | 国产高清在线精品二区app | 国内精品视频在线播放一区 | 国产电影一级视频在线 | 国产精品熟女一区二区 | 国产福利拍拍拍 | 国产中文内射一区二区三区在线 | 国产精品无码久久综合网 | 国产黄a三级三级三级 | 国产一区视频一区欧美 | 国产超碰人人模人人爽人人喊 | 精品人妻一区二区三区有码 | 91精品国产情侣高潮露脸 | 国产高清狼人香蕉在线 | 国产av巨作丝袜秘书 | 精品人妻va出轨 | 国产精品青草久久久久99 | 国产精品国自产观看 | 国产精品秘麻豆免费版口碑爆棚 | 高潮一区二区三区在线 | 国产成本人片无码免费2025 | 国产精品精品二区 | 国产日韩精品无码去免费专 | 国产紧身裤三级在线视频 | 国产极品喷水视频 | 国产自产v一区二区三区c按摩 | 国产精品美女视频 | 成人国产一区二区三区久久久 | 成年无码av动漫全部免费 | 国产69精品久久久久熟女 | 国产成年无码aⅴ片在线观看 | 2025国产精品网站在线播放 | 成人区人妻精品一区二区不卡网站 | 国产人妻久久精品二区三区特黄 | 国产一区二区三区男同性恋 | 精品特色国产自在自线拍 | 91久久国产高清 | 精品国产一区二区三区 | 国产成人午夜福利小久久久 | 国产精品无码久久久久久曰本 | 国产精品日韩专区 | 国产成人无码免费看片软 | 99国产欧美另类久久久精品 | 国产一级毛片a午夜一级毛片 | 高潮毛片无遮挡高清免费视频 | 国产一区国产二区国产三区 | 国产午夜精品久久久久精品电影 | 国产精品对白刺激音频在线观看 | 国产精品无码翘臀在线观看 | 国产成人无码a区视频在线观看 | 国产日韩新片无码一区 | 精品人妻一区二区三区有码 | 18成禁人视频打屁股免费网站 | 91黑丝大长腿你视频里见过我 | 国产av无码专区亚洲av男同 | 国产精品三级在线观看 | 91成人无码免费一区二区尤物 | 国产内地激情精品毛片在线一 | 国产午夜亚洲精品不卡福利 | 丰满放荡岳乱妇91ww | 国产高清精品在线中文字幕 | 国产爆乳福利片在线手机观看 | 精品无码专区亚洲 | av三级网站免费观看 | 国产成人综合亚洲欧美 | 国产亚洲无码在线观看 | 69久久夜色精品国产 | 国产麻豆入在线观看 | 妓女妓女影院妓女视频妓女影库 | 黄色av无码 | a级国产乱午夜理论片在线观看 | 国产三级黄片一区二区三区 | 91大神精品全国在线观看 | 国产精品黄在线观看免费网站 | 国产精品对白刺激音频在线观看 | 国产国拍亚洲精品无码 | 99国产精品视频一区二区三区 | 精品日韩av一区无码 | 国产av国片精品有毛 | 韩国午夜理伦三级在线观看仙踪林 | heyzo无码一区综合在线播放 | 国产成a人亚洲精ⅴ品无码 国产成a人亚洲精ⅴ品无码性色 | 国产精品伦一区二区三级视频 | 国产一线天粉嫩馒头极品av | 国产成人午夜在线视频极速观看 | 99久免费精品视频在线观看 | 国产午夜成人无码免费看不卡 | 高清无码免费网址 | 国产成人欧美一区二区三区vr | 国产综合精品swag | 国产高清无码在线 | 国产三级精品三级男人 | 国产精品白丝喷水在线观看者相 | 高清无码国产在线 | 国产激情无码视频一区二区三区 | 精品深夜av无码一区二区老年 | 国产色精品久久人妻无码看片软件 | 国产精品区在线观看 | 91麻豆精品一二三区在线 | 国产无套内射一级毛片农民工 | 国产欧美野外性生活 | 丰满少妇高潮惨叫久久久一 | 国产一区二区成人电影 | 国产丝袜无码一区二区三区视频 | 精品人妻毛片免费视频 | 国产原创高清不卡av在线一区 | 国产极品jk白丝喷白浆图片 | av黄片夜晚在线观看 | 国产精品毛片av一级 | av一区二区人妻无码 | 国产亚洲精品4区在线观看 国产亚洲精品91 | 国产精品亚洲欧美日韩区 | 国产狂喷潮 | 99国产一区| 国产精品人妻久久ai换脸 | 成人精品视频免费 | 91精品国产福利在线观看 | 91视频青青草 | 国产v综合v亚洲欧美大另类 | 国产福利姬喷水福利在线观看 | 91亚洲国产成人久久精品网站 | 国产成人综合欧美精品久久 | 91亚洲中文天堂在线观看 | 国产成人精品一区二区视频 | 国产免费无码v片在线观看不卡 | 99久久综合狠狠综合久久aⅴ | 91人妻精品无码一区二区三区 | 国产在线无码免费播放视频 | 丰满熟妇人妻中文字幕 | 国产人妻精品久久久久野外 | 国产无套视频在线观看香蕉 | 精品偷自拍另类 | 国产午夜免费啪视频观看视频 | 成年女人毛片免费视频 | 国产成人啪午夜精品网站男同 | 国产人妻久久精品一区 | 精品日韩欧美人妻少妇 | 国产精品无套 | 99精品国产福利 | 不卡一级毛片免费 | 国产精品成人无码视频 | 国产极品美女高潮无套在线观看 | 白丝jk女仆爆乳自慰喷水 | 国产丝袜视频在线观看 | 91国产日韩制服在线一区 | 国产av天堂亚洲国产av天堂 | 国产精品无码一级毛片app下载 | 国产成人综合日韩精品无 | 国产福利av在线播放 | 精品国产aⅴ一区二区三区v免费 | 91精品国产全国免费观看蜜桃 | 国产成人精品日本亚洲尤物 | 精品国产免费第一区二区三区日韩 | 成人免费av片在线观看 | 精品国产aⅴ一区二区三区4区 | 91精品成人福利在线播放 | 国产成人观看在线视频 | 国产亚洲情侣 | 国产a网欧美午夜性 | 国产深夜福利视频在线 | 国产成年无码久久久久下载 | 国产精品无码一区二区av | 18禁男女爽爽爽午夜网站免费 | 高潮抽搐白浆视频在线观看 | 99久久精品视香蕉蕉 | 国产精品合集久久久久青苹果 | 91精品福利麻豆专区 | 国产一级a爱片在线观看视频 | 国产精品另类激情久久久免 | 国产精品一区在线免费观看 | 国产成人一区二区在线不卡 | 国产精品成人免费视频网站京东 | 精品视频国产狼人视频 | 国产欧美激情黄片 | a级日本乱理伦片免费入口 a级日本乱理伦片免费入口: | 国偷自产一区 | 成人免费无码不卡毛片 | 国产精品国色综合久久 | 国产成人一区二区三区毛片 | 国产在线无码精品麻豆不卡 | 国产精品日韩久久肉色丝袜交足 | 国产精品日本一区二区在线 | 国产欧美日韩视频怡春院 | 精品动漫在线观看视频一区 | 2025国产精品| 国产精品视频一区二区三区在线观看 | av夜夜欢一区二区三区 | 91在线精品| 国产精品九九久久精品女同 | 成人国产精品一区在线观看播 | 精品国产91高清在线观看 | 99精品免费在线观看 | a人片视频在线观看 | 国产成人亚洲综合无码精品 | 国产精品一级免费av | 囯产极品美女高潮无套久久久 | 东京一本到熟无码免费视频 | 国产一区二区三区播放 | 国产精品午夜一区二区 | 国产大学生喷水流白浆视频 | 成人国产一区二区 | 成人h动漫精品一区二区无 成人h动漫精品一区二区无码 | 国产高清免费在线观看精品 | 国产aⅴ无码专区 | 国产v片在线播放免费观看大全 | 国产亚洲啪啪视频 | 高清一区二区亚洲 | 国产v日本v欧美v一二三四区 | 国产色婷婷免费视频 | 91麻豆精品国产福 | 国产精品麻豆羞羞答答 | 91精品手机在线无码 | 国产不卡高清视频在线观看 | 国产麻豆精品入口在线观看 | 精品亚洲国产成av人片不卡无码 | 国产av巨作国产剧情 | 91人妻视频 | 丰满巨臀大屁股bbw 丰满老熟妇aaaa片 | 国产无码精品在线 | 国产āv日韩āⅴ亚洲āv无码馆 | 国产av国片精品麻豆 | 国产麻豆a一级毛片爽爽影院 | 国产精品柳州莫菁 | 国产福利av在线播放 | 国产麻豆精品免费视频 | 国产成人久久综合一区四季 | 91精品福利在线观看 | 国产一区二区网曝门日韩 | 国产精品不卡无码av在线播放 | 91在线超高颜值国产 | 韩国高清一区二区午夜无码 | 成人午夜特黄aaaaa片男男 | 国产国语对白露脸正在播放91 | 91麻豆国产高清产精 | 波多野结衣中文字幕一区二区三区 | 不卡高清av手机在线观看 | 91制片国产自 | 国产自国产自愉自愉 | 国内亚洲欧美一区二区三区 | 国产成年无码av片在线韩国 | 国产成人h片视频在线观看 国产成人h在线观看网站站 | 国产精品无码无卡毛 | 福利片在线观看免费高清视频 | 国产亚洲欧洲人人网在线观看 | 成人精品一区二区三区中文 | 黑人巨大欧美精品一区二区o | 99久久这里只精品国产免费 | 国内精品视频自在欧美一区 | 岛国一二三区无码视频 | 国产精品白浆无码流出免费看 | av亚欧洲日产国码无码 | 国产成人综合精品 | 国内第一永久免费福利视频 | 国产成人精品免费视频软件 | 国产91丝袜播放动漫 | 国产成人人综合亚洲欧美丁香花 | 国产二区三区中文字幕 | 国产免费一区二区三区免费视频 | 国产在线无遮挡免费观看 | 国产精品成人免 | 国产精品无码播放 | 国产精品午夜爆乳美女 | 国产欧美久久久精品影色欲 | a级毛片无码免费真人 | 成人婷婷网色偷偷亚洲男人 | 成人国产精品一区二区视频 | 激情航班h版在线观看 | 91视频国产精品免费观看 | 国产精品美脚玉足脚交欧美 | 国产aⅴ天堂亚洲国产av | 国产美女裸身无遮挡网站 | 国产精品一卡二卡三卡 | 91视频国产 | 精品动漫一区二区无遮挡 | av天堂最新手机网址 | 国产精品欧美亚洲韩国日本不卡 | 国产蜜桃扣扣传媒av性色 | 国产最爽的aⅴ片在线观看 国产最爽的av片在线观看 | 动漫精品中文字幕制服一区 | 国内偷窥一区二区三区视频 | 高清在线亚洲精品国产二区 | 国内偷窥一区二区三区视频 | 国产人妖| 国产成人午夜福利影片 | 国产精品一区91 | 国内精品久久人妻系列 | 国产午夜精品无码一区二区 | 国产精品视频一区二区三区免费 | 国产最新自拍视频 | 精品明星系列无码专区 | 99久久午夜精品一区二区 | 国产三级在线现免费观看 | 99精品国产一区二区电影 | 国产拍揄自揄免费观看 | 精品日本免费一区二区三区 | 国产精品高清视亚洲一区二区 | 国产成人高清综合在线 | 2025国产精华国产精 | 国产精品无码一区二区三区 | 国产毛片一级不卡 | 91亚洲亚洲高清 | 91在线无码视频 | 国精产品一品二品国在线 | 99精品视频只99有精品 | 国产成人av在线精品无码 | 动漫精品专区一区二区三区不 | 国产69精品久久久久孕妇 | 国产精品成人v片免费 | 国产精品无码av片在线观看播 | 国产漫画无码作爱视频免费 | 国产成人精品久久久久久久 | 韩国免费级作爱片无 | a亚洲欧美中文日韩 | 成人影视大全在线看入口无码 | 国产亚洲欧美另类中文 | 国产午夜福利电影免费在线观看 | 国产高清乱理伦片中文 | 国产精品精品一级v片免费 国产精品精品在线看 | 国产成人无精品久久久久国语 | 国产91社区在线播放 | 国产精品欧美一区二区三区不卡 | 国产欧美日本亚洲精品一5 国产欧美日本亚洲精品一5区 | 国产成人综合在线观看网站 | 国产午夜精品久久久久九九电影 | 国产午夜免费福利红片 | 国产成人久久综合视频 | 国产91电影厂精品福利片 | 国产一区二区精品久久91 | 国产微拍无码精品一区 | 国产亚洲日韩网暴欧美台湾 | 国产成人无码午夜大片 | 91高潮一区二区三区高潮九色 | 国产精品一区二区日韩欧美 | 加勒比综合精品视频在线 | 东京热一区二区沙河无码网站 | 2025免费国内精品在拍自线 | 国产激情视频在线观看免费播放 | av在线资源网址 | 国产a毛片精品日日夜 | 国产精品99一区二区三区 | 国产成人电影在线观看 | 精品无人区一码卡二卡三 | 18禁止观看强奷免费国产大片 | 国产日韩欧美另类视频 | 91精品国产自产 | 国产在线91高清 | 国产午夜亚洲精品国产成人小说 | 东京热中文字幕a专区 | 国产精品无码av在线 | 国产私人尤物无码不卡 | 国产精品人妻无码久久久张津瑜 | 国产一区二区电影 | 国产无码三级在线电影网址 | 国产高清无码一v二v | 国产精品国内免费一区二区三区 | 91精品国产全国免费观看蜜桃 | av毛片久久久久午夜福利hd | 91福利在线观 | 国产成人精品999在线观看视频 | 国产精品亚洲w码日韩中文app | 国产成a人亚 | 国产麻豆叶一涵剧情在线观 | 91婷婷大香蕉 | 精品国产高清a毛片 | 国产精品免费高清 | 97人妻在线免费视频 | 91看片网站免费看 | 成人av动漫在线观看 | 丰满人妻无码aⅴ一区二区 丰满人妻无码专区视频 | 国产成人自啪精品视频 | 精品国产专区91在线尤物 | 国产a级毛片久久影院 | 国精品无码一区二区三 | 丰满人妻一区二区三区视频 | 成人区人妻精品一区 | 不卡午夜中文字幕 | 国产在线91精品天天更新 | 国产美女极度色诱 | 国产91av视频在线播放 | 精品少妇无码一区二区三区免费 | 国产亚洲视频在线播放无水印 | 国产黄a三级三级三级看三级 | 2025亚洲国产成a在线 | 国产精品亚洲av |