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

半岛外围网上直营

初步體驗數據驅動之美---TreeView

轉帖|其它|編輯:郝浩|2011-08-10 14:46:55.000|閱讀 514 次

概述: 繼上一篇《WPF應用基礎篇---TreeView》的發布之后,有部分朋問我關于里面一些基礎應用的問題,可能是我寫得不夠詳細,所以在這里,我想再次那文章中的案例來談談初步體驗數據驅動之美,擺脫舊WinForm編程習慣(靠觸發事件來實現界面的變化)。

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

  繼上一篇《WPF應用基礎篇---TreeView》的發布之后,有部分朋問我關于里面一些基礎應用的問題,可能是我寫得不夠詳細,所以在這里,我想再次那文章中的案例來談談初步體驗數據驅動之美,擺脫舊WinForm編程習慣(靠觸發事件來實現界面的變化)。

 1.背景

   我們看看以下案例圖片的功能如何實現:

   

    圖1-1(WinForm兩態樹)           圖1-2(WPF三態樹)

  如果我們還處在習慣于WinForm開發的時候,我們首先關注的是,我們需要重寫Tree控件,在上一篇文章中有提到過,這里就不再重復。然后當我們布局和設計好數據結構后,我們關心的自然就是選中的時候要做什么,我們首先會考慮到為樹節點添加事件來處理相應的邏輯處理。大致實現以下幾個步驟(簡單的分析)

  • 把sender或者e參數轉換為TreeNode
  • 從TreeNode中的Tag數據
  • 根據Tag的類型轉換為具體數據
  • 判斷TreeNode選中的狀態,更改Tag實例的屬性的狀態如(IsSelected)
  • 根據需求比如:

  全部選中-->父節點CheckBox打鉤 同時修改父節點數據,根據當前修改所有子節點狀態

  全部未選中-->父節點CheckBox為空 同時修改父節點數據,根據當前修改所有子節點狀態

  WinForm具體代碼實現兩態樹:

/// <summary>
        /// 設置父節點狀態
        /// </summary>
        /// <param name="node"></param>
        public void SetParentNodeStatus(TreeNode node)
        {
            if (node.Parent != null)
            {
                bool isChecked = true;
                foreach (TreeNode data in node.Parent.Nodes)
                {
                    if (!data.Checked)
                    {
                        isChecked = false;
                        break;
                    }
                }

                if (isChecked)
                {
                    node.Parent.Checked = true;
                    if(node.Parent.Parent!=null)
                    {
                        SetParentNodeStatus(node.Parent);
                    }
                }
                else
                {
                    node.Parent.Checked = false;
                }
            }
        }

        /// <summary>
        /// 設置孩子節點狀態
        /// </summary>
        /// <param name="node"></param>
        public void SetChildNodeStatus(TreeNode node)
        {
            if (node.Nodes!=null)
            {
                foreach (TreeNode data in node.Nodes)
                {
                    data.Checked = node.Checked;
                    if (data.Nodes!=null)
                    {
                        SetChildNodeStatus(data);
                    }
                }
            }
        }

        /// <summary>
        /// 樹節點被選中后 觸發的事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void treeView1_AfterCheck(object sender, TreeViewEventArgs e)
        {
           //isClick是全局變量
             //是為了解決無限遞歸而是用的一個標志
            if (!isClick)              
              {
                return;
            }

            isClick = false;
            TreeNode node = e.Node;           
            if (node.Parent != null)
            {
                SetParentNodeStatus(e.Node);
            }
            if (node.Nodes != null)
            {
                SetChildNodeStatus(node);
            }
            isClick = true;
        }

   而當我們開始慢慢采用WPF之后,我們的編程習慣會發生了很大的變化,我們開始有點對觸發事件來改變邏輯和界面變化(事件驅動)的做法感到反感。解決上面的問題,我們只需要靠一個接口的幫助,就能實現兩態樹的功能。

  • 實現INotifyPropertyChanged解口
  • 當數據改變時修改父節點和相應子節點的狀態,然后把數據綁定到界面上去。 

  WPF具體代碼實現兩態樹:

//是否被選中
         private bool? isSelected;
         public bool? IsSelected 
         {
             get { return isSelected; }
             set
             {
                 if (isSelected != value)
                 {
                     isSelected = value;   
                     ChangeChildNodes(this);
                     ChangedParentNodes(this);
                     NotifyPropertyChanged("IsSelected");
                 }
             }
         }

/// <summary>
         /// 向下遍歷,更改孩子節點狀態
         /// 注意:這里的父節點不是屬性而是字段
         /// 采用字段的原因是因為不想讓父節點觸發訪問器而觸發Setter
         /// </summary>
         /// <param name="CurrentNode"></param>
         public void ChangeChildNodes(Device CurrentNode)
         {
             if (CurrentNode.ChildNodes != null)
             {
                 foreach (var data in CurrentNode.ChildNodes)
                 {
                     data.isSelected = CurrentNode.IsSelected;
                     data.NotifyPropertyChanged("IsSelected");
                     if (data.ChildNodes != null)
                     {
                         data.ChangeChildNodes(data);
                     }
                 }
             }
         }

         /// <summary>
         /// 向上遍歷,更改父節點狀態
         /// 注意:這里的父節點不是屬性而是字段
         /// 采用字段的原因是因為不想讓父節點觸發訪問器而觸發Setter
         /// </summary>
         /// <param name="CurrentNode"></param>
         public void ChangedParentNode(Device CurrentNode)
         {
             if (CurrentNode.ParentNode != null)
             {
                 bool isCheck = true;
                 foreach (var data in CurrentNode.ParentNode.ChildNodes)
                 {
                     if (data.IsSelected != true)
                     {
                         isCheck = false;
                         break;
                     }
                 }
                 CurrentNode.parentNode.isSelected = isCheck;
                 CurrentNode.parentNode.NotifyPropertyChanged("IsSelected");
             }
         }

  從 兩段代碼可以看出,WinForm實現代碼是事件驅動,首先觸發一個事件,然后進行一些邏輯判斷,而且還需要借助全部變量IsClick來防止代碼無限遞 歸。而WPF的實現則是靠數據驅動,數據變化了,然后才調用方法來更改數據的相應狀態。最后才通知界面刷新數據。其實可以看出現在的需求很簡單就是,根據 節點選中狀態操作樹,但是如果我的需求變化了,例如圖1-2的需求一樣,如果我需要打鉤的時候,操作按鈕的狀態,比如打鉤就連接,不打鉤則斷開。 WinForm的話又要在代碼中做一些邏輯判斷,這很容易實現,但是如果我斷開按鈕按下的時候,只能點擊連接,這時候WinForm的事件就要做很多邏輯 處理,如果需求要求的功能多的話,事件的后臺代碼將越來越復雜,最后導致邏輯混亂。而WPF實現的話,則是根據數據變化而且在界面上顯示,當我點擊的時 候,修改下數據的狀態則可以。后臺無需要做太多的處理,這樣代碼結構和邏輯會變得相對清晰。

 2.三態樹具體實現

  這里將為大家介紹下三態樹在WPF中的實現,也是對上一篇的補充。本案例是在基于MVVM的基礎上實現的。要實現圖1-2(三態樹)只需要做以下兩個步驟。

  • 定義好數據結構,并在數據上通過實現INotifyPropertyChanged接口,來屬性變化后通知View刷新數據。
  • 把想對應的屬性Binding到View的控件上。

  數據結構實體代碼:

/// <summary>
     /// 設備基類
     /// </summary>
     public class Device:INotifyPropertyChanged
     {
         //是否被選中
         private bool? isSelected;
         public bool? IsSelected 
         {
             get { return isSelected; }
             set
             {
                 if (isSelected != value)
                 {
                     isSelected = value;   
                     ChangeChildNodes(this);
                     ChangedParentNodes(this);
                     NotifyPropertyChanged("IsSelected");
                 }
             }
         }
        
         private DeviceStatus status;
         public DeviceStatus Status
         {
             get { return status; }
             set
             {
                 if (status != value)
                 {
                     status = value;
                     NotifyPropertyChanged("Status");
                 }
             }
         }

         public string Name { get; set; }
         public string ImageUrl{get;set;}

         private List<Device> childNodes;
         public List<Device> ChildNodes
         {
             get { return childNodes; }
             set
             {
                 if (childNodes != value)
                 {
                     childNodes = value;
                     NotifyPropertyChanged("ChildNodes");
                 }
             }
         }

         private Device parentNode;
         public Device ParentNode
         {
             get { return parentNode; }
             set
             {
                 if (parentNode != value)
                 {
                     parentNode = value;
                     NotifyPropertyChanged("ParentNode");
                 }
             }
         }

         /// <summary>
         /// 向下遍歷,更改孩子節點狀態
         /// 注意:這里的父節點不是屬性而是字段
         /// 采用字段的原因是因為不想讓父節點觸發訪問器而觸發Setter
         /// </summary>
         /// <param name="CurrentNode"></param>
         public void ChangeChildNodes(Device CurrentNode)
         {
             if (CurrentNode.ChildNodes != null)
             {
                 foreach (var data in CurrentNode.ChildNodes)
                 {
                     data.isSelected = CurrentNode.IsSelected;
                     data.NotifyPropertyChanged("IsSelected");
                     if (data.ChildNodes != null)
                     {
                         data.ChangeChildNodes(data);
                     }
                 }
             }
         }

         /// <summary>
         /// 向上遍歷,更改父節點狀態
         /// 注意:這里的父節點不是屬性而是字段
         /// 采用字段的原因是因為不想讓父節點觸發訪問器而觸發Setter
         /// </summary>
         /// <param name="CurrentNode"></param>
         public void ChangedParentNodes(Device CurrentNode)
         {
             if (CurrentNode.ParentNode != null)
             {
                 bool? parentNodeState = true;
                 int selectedCount = 0;  //被選中的個數
                 int noSelectedCount = 0;    //不被選中的個數

                 foreach (var data in CurrentNode.ParentNode.ChildNodes)
                 {
                     if (data.IsSelected == true)
                     {
                         selectedCount++;
                     }
                     else if (data.IsSelected == false)
                     {
                         noSelectedCount++;
                     }
                 }

                 //如果全部被選中,則修改父節點為選中
                 if (selectedCount == 
                     CurrentNode.ParentNode.ChildNodes.Count)
                 {
                     parentNodeState = true;
                 }
                 //如果全部不被選中,則修改父節點為不被選中
                 else if (noSelectedCount == 
                     CurrentNode.ParentNode.ChildNodes.Count)
                 {
                     parentNodeState = false;
                 }
                 //否則標記父節點(例如用實體矩形填滿)
                 else
                 {
                     parentNodeState = null;
                 }

                 CurrentNode.parentNode.isSelected = parentNodeState;
                 CurrentNode.parentNode.NotifyPropertyChanged("IsSelected");

                 if (CurrentNode.ParentNode.ParentNode != null)
                 {
                     ChangedParentNodes(CurrentNode.parentNode);
                 }
             }
         }

         public void NotifyPropertyChanged(string name)
         {
             if(PropertyChanged!=null)
             PropertyChanged(this,new PropertyChangedEventArgs(name));
         }
         public event PropertyChangedEventHandler PropertyChanged;
     }

  View具體實現代碼:

<CheckBox IsChecked="{Binding IsSelected,Mode=TwoWay}" 
Margin="2" VerticalAlignment="Center"/>

     這里只需要把實體的IsSelected屬性Bingding到View上,Mode是雙向的就可以了,具體的邏輯有實體內部做處理,這樣更能體現出 View中代碼的干凈,而且更能讓View和ViewModel耦合性降到最低。實現三態樹的時候有一個小技巧,讓代碼避開了無限遞歸的問題,這里采用屬 性如IsSelected,屬性有setter和gettter訪問器,當我們向上、下遍歷的時候,改變的是數據中的字段isSelected,這樣就不 會觸發了屬性的setter。這也是數據驅動的一個優點之一。

  3.總結     

  WPF的主要思想是用數據驅動來代替事件驅動。當數據發生變化的時候才做出一些相應的處理。這樣的好處就是:

  • 使得代碼邏輯更加清晰。
  • 可以讓數據發生變化,通過屬性訪問器來控制相應的邏輯變化(其實也是數據變化),最后通知View。這樣簡化了邏輯處理而且減少了邏輯混亂的局面。
  • 有利于降低View和ViewModel(或后臺具體實現代碼)之間的耦合度,也就是說有利于把強依賴關系轉為弱依賴甚至沒依賴關系。  

標簽:

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

文章轉載自:博客園

為你推薦

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


添加微信 立即咨詢

電話咨詢

客服熱線
023-68661681

TOP
利記足球官網(官方)網站/網頁版登錄入口/手機版登錄入口-最新版(已更新) 真人boyu·博魚滾球網(官方)網站/網頁版登錄入口/手機版登錄入口-最新版(已更新) 最大網上PM娛樂城盤口(官方)網站/網頁版登錄入口/手機版登錄入口-最新版(已更新) 正規雷火競技官方買球(官方)網站/網頁版登錄入口/手機版登錄入口-最新版(已更新) 雷火競技權威十大網(官方)網站/網頁版登錄入口/手機版登錄入口-最新版(已更新) boyu·博魚信譽足球官網(官方)網站/網頁版登錄入口/手機版登錄入口-最新版(已更新) 權威188BET足球網(官方)網站/網頁版登錄入口/手機版登錄入口-最新版(已更新) 正規188BET足球大全(官方)網站/網頁版登錄入口/手機版登錄入口-最新版(已更新) 国产高清一级毛片在线不卡 | 成人欧美一区二区三区黑人 | 波多野结衣精品一区二区三区 | 国产91白浆在线观看 | 国产不卡在线播放 | 国精品人妻无码一区二 | 国产人妖高清一区二区 | 国产萌白酱喷水视频在线播放 | 国产无码动漫一区二区三区 | 国产一区二区三区在线视频 | 国产麻豆精品在线观看 | 国产麻豆精品免费密入 | 国产精品午夜未成人免费观看 | 国语自产偷拍精品视 | 18禁高潮出水呻吟娇喘mp3 | 国产在线观看91精品2025 | 国产精品无码无卡在线播放 | 国产亚洲综合视频 | 2025无码专区人妻系列日韩 | 国产黄色片免费看 | 国产爆乳无码在线观看 | 东京一本到熟无码免费视频 | 国产一区国产二区国产三区国产欧美 | 国产成人无码一区二区三区在线 | 国产精品美女久久 | 国产剧情av网址网站 | 国产精品高潮久久久久无码 | 国产午夜精品一本在线观看 | 精品午夜福利免费在线观看 | 国产一区二区 | 国产一区中文字幕在线观看 | 国产md视频一区二区三区 | 国产成人精品在线 | 国产无套高潮在线观看 | 91精品隔壁老王在线观看 | 国产亚洲视频在线观看网址 | 国产精品va在线观看丝瓜影院 | av无码精品一区二区三区三级 | av无码久久久久不卡蜜桃 | 国产午夜激无码av毛片 | 国产精品无码高 | 国产精品多p对白交换绿帽 国产精品多人p | 国产精品原创av片国产日韩 | 91人人妻人人做人人爽男同 | 911av视频在线观看 | av午夜福利一片免费看久久 | 国产精品三区四区 | 精品久久久久久无码人妻黑人 | 韩国无码无遮挡在线观看不 | 国自产拍精品超清在线 | 丰满少妇人妻高清大乳在线 | 成人国产精品秘久久久剧情紧凑 | 国产91高潮流白浆在线播放un | 国产成人亚洲精品无码青草 | 国产av一区二区三区日韩 | 精品丝袜国产自在线拍av | 变态的让你无法想象 | 2025国产精产品在线不卡 | 国产精品成人av三级在线 | 99久久国产热无码精品免费 | 国产爆乳美女娇喘呻吟 | 国产精品无码专区第1页 | 成人精品亚洲人成在线 | 高潮流白浆免费观看 | 69国产成人综合久久 | 国产成人在线播放免费视频 | 国产精品一二三区久久狼 | 国产a毛片高清日日夜 | 国产高清精品一区二区三区 | 国产在线精品成人一 | 精品国产91久久久久久黄无码 | 国产午夜三级片 | 精品秘无码一区二区三区 | 99久久亚洲精品日本无码 | 丰满人妻久久中文字幕免费 | 国产日韩欧美成人免费观看 | 国产成人av一区二区三区在线观看 | 国产三级高清视频在线观看 | 91一区二区三区在线观看 | 国产女人喷液 | 国产操b视 | 国产午夜激情无码ⅴ毛片 | 国产成人精品免费青青草原 | 国产成人精品亚洲2025 | 国产91高潮流白浆在线播放un | 99久久精品爆乳 | 东京热av加勒比一区二区 | 按摩师玩弄到潮喷 | av小电影在线播放 | 精品久久久久久天美传媒 | av亚裔在线观看 | 国产在线视欧美亚综合 | 国产色欲女人乱免费视频 | 成人h动漫精品一区二区ji | 国产成人无码a区视频在线观看 | 国产成人无码精品久久久小说 | 国产日韩无码影院一区二区三区 | 成人精品视频 | a级毛片毛片免费观看久潮喷 | 91精品一区二区三区在线播放 | 国女精品爽爽一区二区 | 国产一区二区不卡在线 | av日产天天射 | 国产成人无码av在线播放动漫 | 国产狂喷潮视频免费观看 | 丰满多毛少妇做爰视频爽爽和 | 国产精品亚洲mnbav网站 | 变态国产调教手机在线 | 国产做无码视频在线观看 | 国产一区二区三区激情四射 | 国产麻豆一区二区三 | 成人做色视频在线观看网站 | 国产三级一二三四五区 | 国产超污精品a级毛片 | 国产精品美女www爽爽爽 | 国产av无码专区亚洲av果冻传 | 精品国产伦一区二区三区在线观看 | 91在线精品国产丝袜超清 | 国产成年女人特黄特色毛片免 | 国产亚洲精品久久无亚洲 | 91麻豆精品国产 | av无码免费岛国 | 国产高潮抽搐翻白眼在线播放 | 国产成人av一区二区三区在 | 岛国大片在线一区二区三区 | 国产午夜精品一区 | 国产一级毛片特级毛国产 | 国产欧美久久高清 | 国产欧美日韩亚洲另类 | 国产99精品一区二区三区免费 | 精品无人区乱码一区2区3区 | 国产成人亚洲欧美三区综合。 | 91免费国产高清在线 | 国产毛片久久久久久国产毛片 | 精品福利一区二区在线 | 国产成人永久免费播放视频 | 国产综合亚洲欧美日韩一区二 | 潮喷好爽在线观 | 国产一区二区三区与无尽视频 | 国产午夜精品一区二区 | 国产产在线精品亚洲aavv | 国产91无套剧情在线播放 | 99国产精品视 | 成人黄色在线免费电影 | 国产三级久久精品三级 | 国产三级国产精品国产专区 | 国产av剧情超级爽闺蜜 | 国产一区二区三区免费看视频 | 精品国产丝袜自在线拍国语 | 国产午夜亚洲精品一级在线 | 国产成人精品亚洲一区二区三区 | 国产欧美日韩综合精品一区二区三区 | 精品人妻中文字幕浪潮aⅴ 精品人妻中文字幕无码 | 91午夜福利国产在 | 国产白浆精品永久网站 | 国产高清一卡2卡3卡4卡乱码 | av在线最新网址不卡 | 国产丝袜美腿高跟白浆 | 成年在线观看 | 国精品人妻无码一区二区三 | 国产国语系列在线观看 | 国产精品特黄一级国产大片 | 91福利国产在线 | 国产短视频精品一区二区三区 | 国产日韩a视频在线播放视频 | 99国产在线一区 | 国内精品一区二区三区视频 | 99久久国产主播综合精品 | 国产成人无码v在线播放不卡 | 国产成人免费无庶挡视频 | 国产成a人亚洲精v品在线观看 | 91精品国产一区二区无码思瑞 | 国产精品视频一区国模私拍丝袜 | 国产做a爰片毛片a片美国 | 丰满少妇三级全黄 | 国产成人午夜精彩福利 | 成人免费视频无码视在线 | 99久久国产精品亚洲综合看片 | 91一码二码区别在哪儿啊 | 国产精品无码不卡一区二区三区 | 国产成人免费av片在线观看婷婷 | 国产偷情久久久精品专区 | 91精品观看91久久久久久 | 99精品亚洲一区二区 | 99久re热视频这里 | 国产毛多水多高潮高清 | 国产主播一区二区免费 | av片亚洲国产男人的天 | 国产美女全黄a一级视 | 国产三级直播在线播放直播 | 91精品国产全国免费观看蜜桃 | av成人免费在线播放 | 国模精品一区二区三区视频 | 国产精品六区久久综合亚洲av | 精品人妻无码专区在线视频 | av福利无码中文字幕 | a级毛片无码视频 | 高清无码爱爱免费视频 | 高潮精品呻吟久久无码 | 韩国公妇里乱片a片免费观看 | 国产欧美精品在线一区二区三 | 91精品福利观看 | 精品人妻无码一区二区色欲v | 精品无人区无码乱码毛片国产 | 国产成人av在线 | 91久久电 | 精品国产高清在线看国产 | 国产精品无码无片在线播放 | 91麻精品国产91久久久久 | 国产午夜a一级毛片 | 国产精品无码日韩一区二区三区 | 国产一区二区三区亚洲精品 | 国产美女一丝不佳一级毛片 | 国产精品一区二区免费 | 国产成人久久精品麻豆二区 | 国产野外无码理论片 | 国产精品广西柳州莫菁泽译网 | 国产无套粉嫩白浆在线精品 | 国产精品一区二区黑人巨 | 97人妻无码免费视频一区 | 国产精品三p一区二区视频 国产精品三级 | 极品少妇一区二区三区四区视频 | 国产精品欧美一区不卡亚洲 | 91成人爽a毛片免费网站观看 | 国产精品无码素人福利免费 | 99国产精品 | 国产av一区二区三 | 国产黄色靠逼视频网站 | 国产精品公开免费视频 | 国产成人精品久久久久开播 | 国产成人片在线观看视频 | 高清中文字幕在线 | 高潮喷水波多野结衣在线观看 | 国产va在线播放频 | 91尤物在线观看免费 | 国产成人精品一区二区三区视频 | 国产成人av综合色 | 国产成人a人亚洲精品无码 国产成人a视频 | 国产在线拍揄自揄网址 | 国产精品日日摸夜夜添夜夜添无 | 国产精品无码理论片 | 精品视频在线免费观看 | 国产成人av大片大片在线播 | 国产区精品一区二区不卡中文 | 国产精品美女挤奶汁视频 | 精品午夜福利视频 | 国产精品一区在线观看 | 国产人视频成 | 国产精品制服丝袜欧美 | 国产精品一区欧美日韩制 | 国内偷自第一区二区三区 | 国产精品亚洲综合网 | 国产二区视频在线观看 | 白嫩少妇高潮喷水av | 成人午夜啪啪免费网站 | 成人无码区免费a片在线软件 | 国产精品亚洲综合久久小说 | 成人三级视频在线观看一区二区 | 国产成人无码va在 | 国产欧美高清精品一区2 | 成人免费a级毛片无码片在线播放 | 高清无码一区二区在线观看吞精 | 国产精品麻豆综合在线 | 国产欧美日韩综合aⅴ天堂 国产欧美日韩综合第一区第二区 | 国产不卡理论片在线观看 | 国产人妻人伦精品1国产丝袜 | 99久久婷婷免费国产综合精品 | 国产成人福利院免费观看 | 国产成人高清精品免费53密 | 国产偷自一区 | av无码理论片在线观 | 国产精品女同久久久久电影院 | 精品动漫在线观看视频一区 | 国产一区在线播放网址 | 动漫h精品无码一区二区三区 | 国产三级片在线观看高清 | 二三区久久a片 | 国产在线播放成人午夜精品 | 97人妻在线视频网 | 91成人试看福利体验区 | 国产极品粉嫩馒头一线天图片 | 国产一区二区三区不卡在线 | 国产高清不卡一区二区 | 动漫卡通亚洲欧美一区 | 国产gvgay片g片gay| 果冻传媒app在线播放 | 国产精品日本一区二区在线 | 国产精品女同一区二区在线 | 国产黑色丝袜在线观看片不卡顿 | 国产猛烈高潮 | 91久久综合精品国产丝袜长腿 | 国产成人一区二区三区精品久久 | 国语高清精品一区二区三区 | 91成人在线观看无码 | 国产欧美日韩综合精品久久一区 | av三级片在线观看的 | 国产高清无码中文 | 国产一二三区视频 | 国产精品免费人成网站 | 国产精品无码一本 | 成人熟女一区二区三区 | 国产av午夜精品一区二区入口 | 国产精品美女在线观看福利 | 二区欧美三区 | 国产午夜福利 | 国产91精品一区二区麻豆亚洲 | a级无码久久久一区 | 国内自产少妇自拍区免费 | 国产毛片japa | 国产成人无码区免费网站 | 高潮流白浆喷水正在播放 | 精品无码国产免费网站视频 | av日韩欧美高清在线观看 | 福利姬视频在线观看 | 成人日韩欧美亚洲视频 | 国产一区在线观看视频 | 国产午夜人在线视频 | 国产成人免费软件 | 国产v亚洲v天堂无码果冻传媒 | av无码不卡一区二区三区 | 韩国免费a级作爱片在线观看 | 国产精品国产三级传区网站 | 国产亚洲高质量一路线二路线 | 国产精品国产三级国产专i 国产精品国产三级国产专播 | 国产毛片av一区二区三区 | 精品人妻无码一区二区三区丝袜 | 国产精品制服丝袜清纯唯美 | 国产精品国产三级国产av | 国产波霸爆乳一区二区 | 99久久国产精品欧美蜜芽 | 精品亚洲国产成av人片传媒 | a级毛片高清免费 | 国产精品一级特黄毛片 | 高清成人爽a毛片免费直播 高清成人爽a毛片在线播放 | 精品无人乱码一区二区三区日 | 国产一级毛片大陆 | 国产aⅴ无码精品一区二区 国产aⅴ无码精品一区二区三区 | 精品国产人成亚洲区大色婷婷 | 99亚洲国产精品色一区二区三 | 国产精品无码无卡 | 91华人在线视频 | 国产午夜精品理论片 | 国产无码精品 | 国产麻豆精品乱码一区 | 18禁无遮挡爽爽爽无码视 | 国产成人精品免费视频大全麻 | 国产一区二区三区免费在线观看 | 韩国女主播一区二区视频 | 精品人妻一区2区三区 | 91精品国产综合久久青草 | 99久久精品免费看国产一区二 | 国产毛片精品 | 国产成人精品视频一区二区不卡 | 国产午夜精品久久久久精品电影 | 国产69精品久久久久妇女 | 国产精品亚洲日韩一区二区 | 国产丝袜肉丝视频在线观看 | 福利视频一区二区 | 国产成人亚洲精品无码av大片 | 国产三级精品影院 | 国产成人精品一区二三区2025 | 国产尤物精品无码成人 | 99国产精品久久久久成人热 | 国产一区精品3d动漫在线 | 国产精品无码高清在线观看 | 国产精品国语对白一区二区 | 国产成人一区二区无码不卡在线 | 99国产精品视频 | 91国内精品久久久久怡红院 | 国产成在线观看免 | 国产高清无密码一区二区三区 | 国产经典系列在线观看 | 2025国语电影免费在线观看 | 国产真人一级a爱视频免费看 | 国产成人一区二区三区免费3 | 2025最新无码国产在线观看 | 国产丝袜熟女91 | 极品嫩模众筹福利写真视频 | 精品无码视频一区三区四区 | 国产精品成人免费视频网站 | 2025国内精品久久久久精免费 | 国产91在线九色 | 韩国高清无码久久av | 国产欧美日韩一区二区三区四区 | 国产成年无码a影片 | 69久久国产露脸精品国产 | 国产一区二区三区小说 | av一级在线观 | 国产在线精品一区二区三区直 | 精品亚洲一区二区三区在线播放 | 国产系列在线精品 | 国产精品盗摄偷窥盗摄 | 国产v无码专区亚洲v手机麻豆 | 成人精品午夜在线播放 | 国产欧美日韩专区发布 | 国产成人综合久久 | 91久久精一区二区 | 国产午夜毛片v一区二区三区 | 国产午夜精品一区二区 | 精品国产三级a∨在线无码 精品国产三级aⅴ在线 | 国产尤物在线视精品在亚洲 | 国产精品伦人一久二久三久 | 国产精品女同一区 | 国产91在线精品不卡 | 精品日本三级乱伦 | 成人精品一区二区三区免费视频 | 91精品国产三级在线观看 | 东京热一区二区三区无码视频 | 二区三区在 | 国产成人免费高清 | 国产一级av国片免费变态 | 精品人妻一区二区三区色欲影院 | 91大片淫黄大片在线天堂 | 国产女学生破女初在线观看 | 国产一区日韩二区欧美三区在线 | 91久久亚洲国产成人综合精品 | 国产毛片情侣视频 | 91丝袜| 国产精品一区二区亚瑟不卡 | 国产亚洲欧美日韩在线看片 | 国产一区二区三区日韩欧美 | 国产精品人妻无码一区二区三区 | 成人片国产在线观看无码 | 成人精品视频一区二区三区 | 国产精品三级手机在线观看 | 国产高清不卡一区二区三区 | 91精品国产91久久久久 | 精品少妇人妻av无码专区 | 精品人妻中文字幕有码在线 | 丰满人妻一区二区三区免费视频 | 国产裸体美女永久免费无遮挡 | 国产麻豆精品视频看片 | 丰满肥女巨肥bw | 精品久久久久久无码一区二区 | 99久久69五月天| 国产人视频成 | 国产精品怕怕怕免费视频大全 | 国产毛片黄色美女视频 | 国产aⅴ精品一区二 | 91久久国产综合精品 | 91精品尤物在线观看 | 成人免费无码大片a毛片软件 | 国产成人w一区二区三区综合 | 国产日韩精品无码区免费专区国产 | 精品亚洲视频一区二区在线观看 | 69久久夜色精品国产69 | 国产自愉怕一 | 国产成人欧美精品视频app | 国产麻豆精品久久毛片 | 精品无吗一二三中国兔费黄色视频 | 国产精品免费高清 | 国产色婷婷精品综合在线 | 国产精品无码一区二区在线看 | 国产精品一区二区四区 | 东京热加勒比国产精品 | 国产一区二区三区日韩欧美 | 国产精品亚洲片精品 | 97色老99久久九九爱精品 | 国产综合亚洲欧美日韩一区 | 国产a久久精品一区二 | 成人精品视频在线观看 | 国产精品一级毛片在线不卡 | 国产日韩免费一区二区三区 | 国产免费无码av片在线观看不 | 国产欧美视频一区二区三区 | 国产成人高清成人av片在线看 | 国产一区二区不卡老阿姨 | 国产国语a级毛片麻豆 | 国产精品专区在线免费观看 | 国产一区二区三区精品诱惑网站 | 2025国产精品性爱 | 成人精品午夜在线观看 | 国产成年女人免费视频播放a | 国产极品粉嫩福利 | 精品国产福利在线观看一区 | 国产在线播放综合网房 | 国产精品成人无码a片免费网址 | 国产偷摄中国推油按摩富婆 | 国产美女精品三级在线观看 | 国产成人禁片免费观看视频 | 国产美女a做受大片在线观看 | 国产一区二区三区视频在线看 | 国产午夜无码精品免费看浪潮 | 国产精品一级爱 | 国产精品欧美v片免费观看 国产精品欧美福利 | 91国语精品自产拍在线观看 | 99久久最新视频免费观看 | 精品国产一区二区av麻豆不卡 | 国产成人的电影在线观看 | 国产精品va无码二区 | av免费一级二级 | 99久久久精品免费观看国产 | 成人无码片黄网站a毛片免费 | 国产白浆一区二区三区 | 成人做爰免费a片视频二机片 | 白丝美女视频 | 2025国外视频网站汇总 | 国产熟女 | 精品无码一区二区三区在线 | 国产91精品看黄网站在线观看 | 2025国语神马影院 | 国产精品嫩草影院一二三区入口 | 成人最新午夜 | 99久久精品午夜 | 91伦理在线影院 | 精品国产一区二区三区吸毒 | 91天天综合丝袜内裤高跟鞋 | 国产精品香蕉在线的人 | 国产不卡福利片在线观看浪潮 | 国产+高潮+喷浆 | 国产av无码专区亚洲awww | 国产成人aa在线观看 | av无码国产永久播放 | 韩国免费a级毛片久久 | 国产放荡对| 成人无码精品1区2 | 91精品国产福利在线观看性色 | 国产午夜看片 | 国产午夜视频在线观看网站 | 国产一区二区二区无码网站 | 国产爽的冒白浆的视频高清 | 成人免费无码精品国产91 | 国产微拍无码精品一区 | 国产成人精品综合久久66 | 国产成人va亚洲电影 | 91精品国产乱码久久久久久 | 精品无码国产一区二区三区51 | 国产美女冒白浆免 | 国产高清在线精品二区app | 丰满白嫩大屁 | 91日亚欧国产内射成人网 | 国产精品无码高清在线观看 | 国产成人涩涩涩视频在线观看免费 | 国产午夜精品理论片久久影院 | 国产在线视频欧美一区二区三区 | 国产三级农村妇女野外 | 国产精品一线二线三线区别解析 | 精品国产一区二区三区不卡在 | 国产精品毛片精彩视频 | 91成人精品爽啪在线观看 | 精品无人区麻豆乱码1区2区新区 | 成人亚洲欧美日韩精品 | 国产成人在线综合 | 18禁人看免费无遮挡网站不卡 | 国产一区二区三区日韩精品 | av一区二区在线播放 | 国产精品视频一区二区三区无码 | 国产三级在线观看视频 | 变态孕交videos | 极品少妇被猛得白浆直流草莓视频 | 国产aⅴ精品一区二区三 | 99国产这里只有精品视频播放 | av无码免费看一区 | 国产精品夜夜春夜夜爽久久 | 国产精品青青青高清在线观看 | 国产aa免费视频观看 | 2025年国产理论在线观看 | 成人一区二区三区视频在线观看 | 国产三级电影免费 | 91精品国自 | 国产成人精品午夜在线观看 | av无码乱码国产 | 国产午夜精品久久浪潮 | 国产午夜免费啪 | 精品无码国产 | 国产精品夜夜春夜夜爽久久小说 | 国产产免费av片 | 国产午夜亚洲精品国产成人小说 | 国产一三区a片在线播放 | 国产欧美精品一区二区 | 东京热久久综合伊人av | 成人国产欧美精品一区 | 国产一区二区三区是什么 | 成人欧美一区二区三区白人 | 果冻传媒麻豆系列视频 | 精品亚洲成a人无码成a在线 | 国产三级片在线观 | 91亚洲中文天堂在线播放 | 国产精品毛片a | 精品国产亚洲一区二区三区 | aⅴ亚洲 | 99精品偷拍视频一区二区三区 | av网站免费在线观看精品 | 国产成人精品免费播放视频 | 精品国产一区二区三区无码乌克兰 | 国产精品一级a片 | 精品人妻少妇一级毛片免费 | 国产成人久久精品二区三区牛 | 国产av一区二区三区最新精品 | 国产成人无码精品久久久性色 | 精品国产丝袜黑色高跟鞋 | 国产精品成人网站 | 2025亚洲国产成a在线 | 国产丝袜在线精品丝袜不卡 | 国产成人午夜精品影院 | 东京伊人一本到鬼色 | 国产成人无码精品一区在线观看 | 国产成a人亚洲精v品无码性色 | 精品人妻中文字幕有码在线 | 国产av永久 | 91精品久久久久久久久久入口 | 精品无人区无码乱码毛片国产 | 韩国公妇里乱片a片 | 国产一区二区三区亚洲 | 国产成人久久精品二区三区 | 国产99久久九九精品无码动漫 | 国产福利小视频在线免费观看 | av午夜福利一 | 国产精品毛片久久久久久久av | 国产精品爆乳中 | 精品无码欧美一区二区三区不卡 | 国产精品免费不卡无码av | 91麻豆产精品久久久久久下载 | 国产成人综合亚洲欧洲色就色 | 国产成人麻豆精品午夜福利在 | 国产精品高清国产三级国产 | 国产狂喷潮视频免费观看 | 国内国外精品一区二区 | 国产午夜男女爽爽爽爽爽视频 | 成人爱av在线播放 | 国产精品毛多多水多 | 精品国产成人一区二区99 | 福利视频一区二区三区四区 | 91福利在线 | 国产精品亚洲αv天堂无码 国产精品亚洲产品一区二区三区 | 国产在线播放无码不卡 | 国产成人精品月日本亚洲语音 | 国产高清av日 | 国产三级欧美三级 | 国产高清无码黄片亚洲大尺度视频 | 岛国在线观看无码不卡 | 国产a精品三级 | 91视频国产一区 | 国产无码精品久久 | 国产成人a视频高在线 | 国产成人啪精品视频免费软件 | 国产一区二区三区精品一级片 | 国产一区二区三区精品一级片 | 精品极品国产呦在线观看 | 国产精品亚洲综合第一区 | 国产精品久久久久精品三级a | 精品麻豆国产色欲色欲 | 国产精品视频一区二区三区免费 | 国产偷窥熟女高潮精品视频 | 成人免费观看在线视频 | 丰满少妇一级特黄大片 | 国产高清特黄无遮挡大片 | 国产午夜福利不卡在线观看 | 国产孕妇故爱a级高清片免费看 | 国产成人无码午夜视频在线观看 | 国产种子在线看网站在线观看 | 97无码人妻 | 国产福利在线观看一区二区 | 国产精品福利在线观电影看 | av无码精品 | 国产精品国语对白露脸在线播放 | 囯产免费久久久 | 国产精品欧美在线另类小说 | 国产午夜福利内射青草 | 国产在线精品无码不卡手机免 | 国产一区二区三区高清av | 国产成人亚洲精品无码h在线 | a级片中文字幕 | 国产欧美精品一区二 | 成片一卡二卡三卡观看 | 国产精品中文字幕字幕在线 | 99精品国产一区二区电影 | 国产成人无码免费视频97动漫 | 国产无套内射又大又猛又粗又爽 | 国产精品日韩一区二区三区 | 二区三区精品久久 | 国模无码视频一区二区三区 | 国产精品专区第1页 | 成人国内精品 | 国产午夜男女爽爽爽爽爽视频 | 国产黄av在线观看免费福利 | 东京热日韩无码高清国产精品 | 国产亚洲欧美日韩综合一区 | 二区三区久久久久久久 | 国产精品一级毛片无码视频 | 高清国产亚洲va精品 | 国产精品部在线观看 | 国产专区在线观看无码 | 国产三级a三级三级天天 | 国产精品亚洲自在线播放页码 | 国产成人欧美综合在线影院 | 黄色av电影在线观看 | 国产一区二区三区在线精品专区 | 国产三级av在线播放 | 国产在线精品99一卡2卡 | 国产精品美女久久久久久麻 | 国产精品伦理一区二区三区 | 国产美女裸体免无遮挡免费网站 | 国精产品一品二品国在线 | 国产二级一片内射视频播放 | 国产色视频在线观看免费 | 91尤物免费在线观看精品 | av无码人妻一区二区三区在 | 国内偷窥一区二区三区视 | 精品无码国产自产在线观看 | av无码人妻中文字幕 | 国产成人精品午夜福利电影 | 国产精品免费久久久久久蜜桃 | 成人国内精品 | 国产一区二区三区四区五区加勒比 | 国产日韩一区二区精品在线播放 | 97人人模人人爽人人少妇 | 成人国产欧美大片一区 | 国产精品亚洲综合在线观看 | 国产成人精品久久久久精品 | 精品人妻无码专区在线无广告 | 精品福利在线观看 | 成人午夜精品久久久久久久小说 | 国产精品视频免费一区二区 | 国产午夜成人免费看片无遮挡 | 精品久久久久精品亚洲 | 国产精品久av福利在线观看 | 国产精品亚洲a∨天堂 | aⅴ无码一级a片在线视频免费 | 国产麻豆视频网站 | 国av丝袜秘书办公室 | 2025精品国产自在现线看 | 国产一区二区理论在线观看 | 国模无码一区二 | 国产午夜精品美女免费大片 | 精品无码久久久久国产动漫3 | 国产福利区一区二 | 91精品国产福利在线观看性色 | 成人播放日韩在线观看视频 | 国产精品夜夜春夜夜爽久久 | 91精品国产人成网站 | 国内福利在线视频 | ww成人片在线观看 | 18禁肉肉无遮挡无码网站 | 国产成人夜色影视视频 | 国产毛片女人一级毛片 | 国产欧美日产高清欧美 | 国产高清无码在线观看 | 97色伦图片97综合影院 | 国产精品刺激对白一区二区三区 | 国产一区二区三区精品久久呦 | 国产成人用品经典三级 | 成人黄色在线观看 | 国产sanji高清在线视频观看 | 国产成人精品免费视频版大全软件 | 国产精品秘入口麻豆 | 东京热亚洲精品中文一区 | 成人无码一区二区三区影院 | 国产剧情自在拍精品在线播放 | 国产成人精品亚洲日本在线 | 国产精品丝袜自慰在线观看 | 国产成人一区二区免费不卡视频 | 国产精品国产高清国产专区 | 成人精品毛片免费视频 | 国产精品韩国一区二区三区 | 岛国动作片免费免费全集观看 | 精品福利一区二区在线 | 国产ol丝袜高跟在线观看不卡 | 精品人妻无码专区 | 东京热无码一区二区三区av | 高清不卡v免费费 | av在线中文字幕不卡电 | 国产末成年女av片一区二区 | 国产激情国语对白普通话 | 国产精品一区二区在线观看99 | 成人在线观看午夜 | av网址导航精品 | 国产爆乳成av人在线播放 | 国产一区二区三区正品 | 国产办公室无码视频在线观看 | 国产精品一区在线播放 | av无码一区二区在线观看 | 成人亚洲欧美日韩精品 | 白嫩无码人妻丰满熟妇啪啪区百度 | 91精品国产一区二区 | 国产高清在线无码不卡 | 国产白丝jk绑缚调教网站 | 国产精品丝袜久久久久久聚色 | 精品无人区麻豆乱码1区2区新区 | 国产区精品 | 国产成人无码区免费aⅴ片老人 | 精品人妻无码一区二区三区换脸 | 国产一三区a片在 | 国产午夜视频看看果冻 | 91精品国产91| 国产粉嫩小泬在线观看泬 | 国语自产偷拍精品视频偷最新 | 福利视频网站导航 | 91露脸的极品国产系列在线观看 | 99精品国产兔费 | 精品国产一区二区三区2025 | 国产精品麻花传媒二三区别 | 高清在线一区二区三区 | 91国内精品久久久久怡红院 | 国产aⅴ精品一区二区三区色成熟 | 国产精品先锋中文在线第一页 | 精品国产一区二区三区av性 | 国产精品欧美日韩 | 成在人线av无码免费 |