日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

扩展GridView控件——为内容项添加拖放及分组功能

發布時間:2024/4/13 编程问答 74 豆豆
生活随笔 收集整理的這篇文章主要介紹了 扩展GridView控件——为内容项添加拖放及分组功能 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

引言

相信大家對GridView都不陌生,是非常有用的控件,用于平鋪有序的顯示多個內容項。打開任何WinRT應用或者是微軟合作商的網站,都會在APP中發現GridView的使用?!癟iles”提供了一個簡單易用,平鋪方式來組織內容顯示。Windows8的開始菜單是最典型的GridView 示例?!伴_始菜單”顯示了系統中安裝的所有應用程序,而且支持重新排列。

本文源于我們項目的開發人員,他們想在項目中提供與GridView相同的用戶體驗,想要創建類GridView控件。

GridView 可以顯示大小不定的內容項,并且以有序的方式顯示。如果各個內容項無序,并且內容尺寸大小相同,GirdView還支持拖拽操作。然而,這些功能并不是默認提供的,需要編寫一定的代碼才能實現。

本文主要介紹了擴展GridView控件——稱為GridViewEx, GridViewEx主要實現GridView在不同大小的內容項中的拖拽功能。

背景

首先了解GridView的基本屬性和功能,GridView包含一些屬性集和 ItemTemplate。為了實現通過拖拽操作執行重排列功能,必須完成以下三件事:

1. 設置AllowDrop屬性為true;

2. 設置CanReorderItems 屬性值為True;

3. 綁定數據源,該數據源必須支持數據修改或支持重排序。例如,使用ObservableCollection或IList數據源。

<GridView ItemsSource="{Binding}" AllowDrop="True" CanReorderItems="True"><GridView.ItemTemplate><DataTemplate><Border BorderBrush="Aqua" BorderThickness="1" Background="Peru"><Grid Margin="12"><Grid.RowDefinitions><RowDefinition /><RowDefinition Height="Auto"/></Grid.RowDefinitions><TextBlock Text="{Binding}"/><TextBlock Grid.Row="1">item</TextBlock></Grid></Border></DataTemplate></GridView.ItemTemplate> </GridView>

擴展后的GridView使用拖拽操作將會非常方便快捷。

GridViewEx 控件

GridViewEx控件彌補了GridView,功能如下:

  • 實現Item Panel 拖拽操作,而不是WrapGrid,StackPanel、VirtualizingStackPanel等
  • 分組時,實現拖拽功能;

我們也為GridViewEx增加了新建分組的功能,如果用戶將內容項拖到控件左邊或右邊時會觸發新建分組操作。

實現拖拽代碼:

1: public class GridViewEx : GridView 2: { 3: /// <summary> 4: /// Initializes a new instance of the <see cref="GridViewEx"/> control. 5: /// </summary> 6: public GridViewEx() 7: { 8: // see attached sample 9: } 10: 11: private void GridViewEx_DragItemsStarting(object sender, DragItemsStartingEventArgs e) 12: { 13: // see attached sample 14: } 15: 16: /// <summary> 17: /// Stores dragged items into DragEventArgs.Data.Properties["Items"] value. 18: /// Override this method to set custom drag data if you need to. 19: /// </summary> 20: protected virtual void OnDragStarting(DragItemsStartingEventArgs e) 21: { 22: // see attached sample 23: }

該控件包含幾個變量,用來存儲拖放內容的索引。OnDragStarting 事件在DragEventArgs.Data.Properties[“Items”] 中存儲拖拽的內容。OnDragStarting 需要根據自己的需求重寫。

當用戶拖拽某一項內容時,需要給用戶提示來引導用戶將內容放在合適的位置上。標準的GriView對象是通過滑動相鄰的內實項來實現的。本文將在GridViewEx中完善此操作。

1: /// <summary> 2: /// Shows reoder hints while custom dragging. 3: /// </summary> 4: protected override void OnDragOver(DragEventArgs e) 5: { 6: // see attached sample } 7: ? 8: private int GetDragOverIndex(DragEventArgs e) 9: { 10: // see attached sample 11: }

實現拖放代碼

首先需要重寫GridView.OnDrop方法,該方法會當用戶釋放某一項內容時觸發。重寫Ondrop方法,代碼如下:

1: /// <summary> 2: /// Handles drag and drop for cases when it is not supported by the Windows.UI.Xaml.Controls.GridView control 3: /// </summary> 4: protected override async void OnDrop(DragEventArgs e) 5: { 6: // see attached sample 7: }

?

OnDrop方法主要實現了內容項從源分組移到目標分組的邏輯代碼,以及創建新分組的功能。

添加新分組

如果GrideView通過將IsSourceGrouped值為True來綁定CollectionViewSource情況下,GridView提供分組功能,這就意味著分組必須對數據源進行分組,但GridView沒有訪問數據的權限。因此本文在執行拖放操作時,實現添加新分組功能。GridViewEx.BeforeDrop事件處理此需求,并且提供更多的數據信息,如DragEventArgs數據。

當用戶執行拖放操作時,觸發BeforeDrop 事件。

1: /// <summary> 2: /// Occurs before performing drop operation, 3: /// </summary> 4: public event EventHandler<BeforeDropItemsEventArgs> BeforeDrop; 5: /// <summary> 6: /// Rises the <see cref="BeforeDrop"/> event. 7: /// </summary> 8: /// <param name="e">Event data for the event.</param> 9: protected virtual void OnBeforeDrop(BeforeDropItemsEventArgs e) 10: { 11: // see attached sample 12: }

BeforeDropItemEventArgs包含關于被拖拽的內容項的重要信息,該信息在OnDrop事件中可使用的。

1: /// <summary> 2: /// Provides data for the <see cref="GridViewEx.BeforeDrop"/> event. 3: /// </summary> 4: public sealed class BeforeDropItemsEventArgs : System.ComponentModel.CancelEventArgs 5: { 6: /// <summary> 7: /// Gets the item which is being dragged. 8: /// </summary> 9: public object Item 10: { 11: get; 12: } 13: /// <summary> 14: /// Gets the current item index in the underlying data source. 15: /// </summary> 16: public int OldIndex 17: { 18: get; 19: } 20: /// <summary> 21: /// Gets the index in the underlying data source where 22: /// the item will be inserted by the drop operation. 23: /// </summary> 24: public int NewIndex 25: { 26: get; 27: } 28: /// <summary> 29: /// Gets the bool value determining whether end-user actions requested 30: /// creation of the new group in the underlying data source. 31: /// This property only makes sense if GridViewEx.IsGrouping property is true. 32: /// </summary> 33: /// <remarks> 34: /// If this property is true, create the new data group and insert it into 35: /// the groups collection at the positions, specified by the 36: /// <see cref="BeforeDropItemsEventArgs.NewGroupIndex"/> property value. 37: /// Then the <see cref="GridViewEx"/> will insert dragged item 38: /// into the newly added group. 39: /// </remarks> 40: public bool RequestCreateNewGroup 41: { 42: get; 43: } 44: /// <summary> 45: /// Gets the current item data group index in the underlying data source. 46: /// This property only makes sense if GridViewEx.IsGrouping property is true. 47: /// </summary> 48: public int OldGroupIndex 49: { 50: get; 51: } 52: /// <summary> 53: /// Gets the data group index in the underlying data source 54: /// where the item will be inserted by the drop operation. 55: /// This property only makes sense if GridViewEx.IsGrouping property is true. 56: /// </summary> 57: public int NewGroupIndex 58: { 59: get; 60: } 61: /// <summary> 62: /// Gets the original <see cref="DragEventArgs"/> data. 63: /// </summary> 64: public DragEventArgs DragEventArgs 65: { 66: get; 67: } 68: }

AllowNewGroup屬性確定用戶拖拽某一內容項到控件邊界時,是否創建新組。GridView并沒有提供此功能,在GridViewEX添加此功能。

1: /// <summary> 2: /// Gets or sets the value determining whether new group should be created at 3: /// dragging the item to the empty space. 4: /// </summary> 5: public bool AllowNewGroup 6: { 7: get { return (bool)GetValue(AllowNewGroupProperty); } 8: set { SetValue(AllowNewGroupProperty, value); } 9: } 10: 11: /// <summary> 12: /// Identifies the <see cref="AllowNewGroup"/> dependency property. 13: /// </summary> 14: public static readonly DependencyProperty AllowNewGroupProperty = 15: DependencyProperty.Register("AllowNewGroup", typeof(bool), 16: typeof(GridViewEx), new PropertyMetadata(false));

為了在拖拽過程中添加分組,需要將AllowNewGroup屬性設置為True。處理GridViewEx.BeforeDrop事件,該事件的參數能夠幫助決定單項內容的起始位置和目的位置。在BeforeDrop事件的Handler中,使用 NewGroupIndex 創建新的數據組,并插入到已有組集合。最后,需要實現的擴展GridView控件模板。在用戶可拖拽的項目的位置創建新分組,并使用占位符來代替。一旦用戶拖某一內容放置到控件的邊界時,觸發創建新分組,ItemsPresenter的兩個邊界元素是新組的占位符。

GridViewEx控件模板generic.xaml,如下:

1: <Style TargetType="local:GridViewEx"> 2: <Setter Property="Padding" Value="0,0,0,10" /> 3: <Setter Property="IsTabStop" Value="False" /> 4: <Setter Property="TabNavigation" Value="Once" /> 5: <Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Auto"/> 6: <Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Disabled"/> 7: <Setter Property="ScrollViewer.HorizontalScrollMode" Value="Enabled" /> 8: <Setter Property="ScrollViewer.IsHorizontalRailEnabled" Value="False" /> 9: <Setter Property="ScrollViewer.VerticalScrollMode" Value="Disabled" /> 10: <Setter Property="ScrollViewer.IsVerticalRailEnabled" Value="False" /> 11: <Setter Property="ScrollViewer.ZoomMode" Value="Disabled" /> 12: <Setter Property="ScrollViewer.IsDeferredScrollingEnabled" Value="False" /> 13: <Setter Property="ScrollViewer.BringIntoViewOnFocusChange" Value="True" /> 14: <Setter Property="IsSwipeEnabled" Value="True" /> 15: <Setter Property="Template"> 16: <Setter.Value> 17: <ControlTemplate TargetType="local:GridViewEx"> 18: <Border BorderBrush="{TemplateBinding BorderBrush}" 19: Background="{TemplateBinding Background}" 20: BorderThickness="{TemplateBinding BorderThickness}"> 21: <ScrollViewer x:Name="ScrollViewer" 22: TabNavigation="{TemplateBinding TabNavigation}" 23: HorizontalScrollMode=" 24: {TemplateBinding ScrollViewer.HorizontalScrollMode}" 25: HorizontalScrollBarVisibility= 26: "{TemplateBinding 27: ScrollViewer.HorizontalScrollBarVisibility}" 28: IsHorizontalScrollChainingEnabled= 29: "{TemplateBinding 30: ScrollViewer.IsHorizontalScrollChainingEnabled}" 31: VerticalScrollMode=" 32: {TemplateBinding ScrollViewer.VerticalScrollMode}" 33: VerticalScrollBarVisibility= 34: "{TemplateBinding 35: ScrollViewer.VerticalScrollBarVisibility}" 36: IsVerticalScrollChainingEnabled= 37: "{TemplateBinding 38: ScrollViewer.IsVerticalScrollChainingEnabled}" 39: IsHorizontalRailEnabled=" 40: {TemplateBinding ScrollViewer.IsHorizontalRailEnabled}" 41: IsVerticalRailEnabled=" 42: {TemplateBinding ScrollViewer.IsVerticalRailEnabled}" 43: ZoomMode="{TemplateBinding 44: ScrollViewer.ZoomMode}" 45: IsDeferredScrollingEnabled=" 46: {TemplateBinding ScrollViewer.IsDeferredScrollingEnabled}" 47: BringIntoViewOnFocusChange=" 48: {TemplateBinding ScrollViewer.BringIntoViewOnFocusChange}"> 49: <StackPanel Orientation="Horizontal"> 50: <Border Width="60" 51: x:Name="NewGroupPlaceHolderFirst" 52: Background="Transparent" 53: Padding="{TemplateBinding Padding}" 54: Visibility="{Binding AllowNewGroup, 55: Converter={StaticResource 56: VisibilityConverter}, 57: RelativeSource={RelativeSource TemplatedParent}}"/> 58: <ItemsPresenter 59: Header="{TemplateBinding Header}" 60: HeaderTemplate="{TemplateBinding HeaderTemplate}" 61: HeaderTransitions="{TemplateBinding HeaderTransitions}" 62: Padding="{TemplateBinding Padding}"/> 63: <Border Width="60" 64: x:Name="NewGroupPlaceHolderLast" 65: Background="Transparent" 66: Padding="{TemplateBinding Padding}" 67: Visibility="{Binding AllowNewGroup, 68: Converter={StaticResource 69: VisibilityConverter}, 70: RelativeSource={RelativeSource TemplatedParent}}"/> 71: </StackPanel> 72: </ScrollViewer> 73: </Border> 74: </ControlTemplate> 75: </Setter.Value> 76: </Setter> 77: </Style>

?

豐富GridViewEx功能

如上所示,我們已經實現了基本的拖拽操作,與Windows8 開始菜單類似的功能,接下來討論如何實現以下功能:

  • 尺寸大小不定的內容項
  • 分組
  • 添加新組
  • 節省跨會話布局空間

大小不定的內容項

Windows8展示了不同大小的Tiles,但是目前GridView或GridViewEx還不支持此功能。因為GridView使用WrapGrid作為默認的ItemsPanel,WrapPanel只能創建一種布局,即所有的條目尺寸相同的。因此微軟提供了VariableSizedWrapGrid,支持不同大小塊的布局創建。

GridViewEx控件的優勢在于能夠使用VariableSizedWrapGrid,并且很好的支持拖放操作。為了使用VariableSizedWrapGrid 并顯示不同大小的內容項,必須實現以下功能:

將GridViewEx.ItemsPanel 設置為VariableSizedWrapGrid

在GridView中重寫GridView 的PrepareContainerForItemOverride 方法。在該方法中,可以設置Item的RowSpan或ColumnSpan屬性來識別內容項的大小。

即生成繼承GridViewEx的新控件MyGridView。為什么需要擴展GridViewEx控件而不是重寫GridViewEx的PrepareContainerForItemOverride方法?因為指定Item尺寸的邏輯必須放在數據模型中,而不是控件內部。

如想將某一項顯示較大一點,需要在數據項中創建一個屬性返回比1大的整型數值,來設置RowSpanhuoColumnSpan屬性。

1: public class Item 2: { 3: public int Id { get; set; } 4: public int ItemSize { get; set; } 5: /* */ 6: }

因此,當創建新的內容項,我們要指定ItemSize屬性。如果值為1則表明常規尺寸,如果值為2則表明大尺寸,ColumnSpan屬性則設置為2。

1: /// <summary> 2: /// This class sets VariableSizedWrapGrid.ColumnSpanProperty for GridViewItem controls, 3: /// so that every item can have different size in the VariableSizedWrapGrid. 4: /// </summary> 5: public class MyGridView : GridViewSamples.Controls.GridViewEx 6: { 7: // set ColumnSpan according to the business logic 8: // (maybe some GridViewSamples.Samples.Item or group properties) 9: protected override void PrepareContainerForItemOverride( 10: Windows.UI.Xaml.DependencyObject element, object item) 11: { 12: try 13: { 14: GridViewSamples.Samples.Item it = item as GridViewSamples.Samples.Item; 15: if (it != null) 16: { 17: element.SetValue( 18: Windows.UI.Xaml.Controls.VariableSizedWrapGrid.ColumnSpanProperty, it.ItemSize); 19: } 20: } 21: catch 22: { 23: element.SetValue(Windows.UI.Xaml.Controls.VariableSizedWrapGrid.ColumnSpanProperty, 1); 24: } 25: finally 26: { 27: base.PrepareContainerForItemOverride(element, item); 28: } 29: } 30: }

創建MyGridView實例,并綁定到數據集合。

1: <local:MyGridView AllowDrop="True" CanReorderItems="True" 2: CanDragItems="True" IsSwipeEnabled="True" 3: ItemsSource="{Binding}" 4: ItemTemplate="{StaticResource ItemTemplate}" > 5: <GridView.ItemsPanel> 6: <ItemsPanelTemplate> 7: <VariableSizedWrapGrid ItemHeight="160" 8: ItemWidth="160" /> 9: </ItemsPanelTemplate> 10: </GridView.ItemsPanel> 11: <GridView.ItemContainerStyle> 12: <Style TargetType="GridViewItem"> 13: <Setter Property="HorizontalContentAlignment" 14: Value="Stretch"/> 15: <Setter Property="VerticalContentAlignment" 16: Value="Stretch"/> 17: </Style> 18: </GridView.ItemContainerStyle> 19: </local:MyGridView>

如上所示,我們將指定內容項的ItemSize屬性設置為2,效果如圖所示:

分組

使用GridViewEx控件,能夠實現添加新分組和拖拽等功能,也是在App中最為常見的功能,實現分組必須完成以下設置:

  • 為GridView綁定CollectionViewSource,必須使用支持分組的數據源。CollectionViewSource可視為代理服務器。
  • 使用GroupStyle確定分組結果如何顯示,GroupStyle包含Header Tempate及Panel,因此需要指定子項目的排序方式。

在GridViewEx中添加支持不同大小的內容項,邏輯代碼:

1: <local:MyGridView AllowDrop="True" CanReorderItems="True" 2: CanDragItems="True" IsSwipeEnabled="True" 3: ItemsSource="{Binding}" 4: ItemTemplate="{StaticResource ItemTemplate}" > 5: <GridView.ItemsPanel> 6: <ItemsPanelTemplate> 7: <VirtualizingStackPanel Orientation="Horizontal"/> 8: </ItemsPanelTemplate> 9: </GridView.ItemsPanel> 10: <GridView.GroupStyle> 11: <GroupStyle> 12: <GroupStyle.HeaderTemplate> 13: <DataTemplate> 14: <Grid Background="LightGray" 15: Margin="0"> 16: <TextBlock Foreground="Black" 17: Margin="10" 18: Style="{StaticResource 19: GroupHeaderTextStyle}"> 20: <Run Text="{Binding Id}"/> 21: <Run Text=" group"/> 22: </TextBlock> 23: </Grid> 24: </DataTemplate> 25: </GroupStyle.HeaderTemplate> 26: ? 27: <GroupStyle.ContainerStyle> 28: <Style TargetType="GroupItem"> 29: <Setter Property="BorderBrush" 30: Value="DarkGray"/> 31: <Setter Property="BorderThickness" 32: Value="2"/> 33: <Setter Property="Margin" 34: Value="3,0"/> 35: </Style> 36: </GroupStyle.ContainerStyle> 37: ? 38: <GroupStyle.Panel> 39: <ItemsPanelTemplate> 40: <VariableSizedWrapGrid ItemHeight="160" 41: ItemWidth="160" /> 42: </ItemsPanelTemplate> 43: </GroupStyle.Panel> 44: </GroupStyle> 45: </GridView.GroupStyle> 46: ? 47: <GridView.ItemContainerStyle> 48: <Style TargetType="GridViewItem"> 49: <Setter Property="HorizontalContentAlignment" 50: Value="Stretch"/> 51: <Setter Property="VerticalContentAlignment" 52: Value="Stretch"/> 53: </Style> 54: </GridView.ItemContainerStyle> 55: </local:MyGridView>

運行演示:

添加新分組

自定義的GridViewEx控件支持新分組的創建,因此需要設置AllowNewGroup為True。其次處理添加新分組的數據層,處理GridViewEx.BeforeDrop 事件。

1: /// <summary> 2: /// Creates new CollectionViewSource and updates page DataContext. 3: /// </summary> 4: private void UpdateDataContext() 5: { 6: CollectionViewSource source = new CollectionViewSource(); 7: source.Source = _groups; 8: source.ItemsPath = new PropertyPath("Items"); 9: source.IsSourceGrouped = true; 10: this.DataContext = source; 11: } 12: // creates new group in the data source, 13: // if end-user drags item to the new group placeholder 14: private void MyGridView_BeforeDrop(object sender, Controls.BeforeDropItemsEventArgs e) 15: { 16: if (e.RequestCreateNewGroup) 17: { 18: // create new group and re-assign datasource 19: Group group = Group.GetNewGroup(); 20: if (e.NewGroupIndex == 0) 21: { 22: _groups.Insert(0, group); 23: } 24: else 25: { 26: _groups.Add(group); 27: } 28: UpdateDataContext(); 29: } 30: }

也可以使用Drop事件刪除空分組

1: // removes empty groups (except the last one) 2: private void MyGridView_Drop(object sender, DragEventArgs e) 3: { 4: bool needReset = false; 5: for (int i = _groups.Count - 1; i >= 0; i--) 6: { 7: if (_groups[i].Items.Count == 0 && _groups.Count > 1) 8: { 9: _groups.RemoveAt(i); 10: needReset = true; 11: } 12: } 13: if (needReset) 14: { 15: UpdateDataContext(); 16: } 17: }

節省布局空間

Windows8支持掛起或終止功能,為了提供更好的用戶體驗,我們繼續改善此前實現的功能,當用戶離開當前頁面,將當前的布局暫存。在本示例中,我們使用JSON 字符串簡化數據序列化。根據已有的數據、數據的大小及需求,以其他格式來保存數據。我們主要將“業務對象集合”保存。

為了節省布局空間。重寫LayoutAwarePage方法:

1: /// <summary> 2: /// Populates the page with content passed during navigation. Any saved state is also 3: /// provided when recreating a page from a prior session. 4: /// </summary> 5: /// <param name="navigationParameter">The parameter value passed to 6: /// <see cref="Frame.Navigate(Type, 7: /// Object)"/> when this page was initially requested. 8: /// </param> 9: /// <param name="pageState" 10: /// >A dictionary of state preserved by this page during an earlier 11: /// session. This will be null the first time a page is visited.</param> 12: protected override void LoadState(Object navigationParameter, 13: Dictionary<String, Object> pageState) 14: { 15: base.LoadState(navigationParameter, pageState); 16: if (pageState != null && pageState.Count > 0 17: && pageState.ContainsKey("Groups")) 18: { 19: // restore groups and items from the previously serialized state 20: System.Runtime.Serialization.Json.DataContractJsonSerializer rootSer = 21: new System.Runtime.Serialization.Json.DataContractJsonSerializer(typeof(List<Group>)); 22: var stream = new MemoryStream(System.Text.Encoding.UTF8.GetBytes 23: ((string)pageState["Groups"])); 24: _groups = (List<Group>)rootSer.ReadObject(stream); 25: } 26: else 27: { 28: // if we get here for the first time and don't have 29: // serialized content, fill groups and items from scratch 30: for (int j = 1; j <= 12; j++) 31: { 32: Group group = Group.GetNewGroup(); 33: for (int i = 1; i <= 7 + j % 3; i++) 34: { 35: group.Items.Add(new Item() 36: { 37: Id = i, 38: GroupId = group.Id 39: }); 40: } 41: _groups.Add(group); 42: } 43: } 44: UpdateDataContext(); 45: } 46: ? 47: /// <summary> 48: /// Preserves state associated with this page in case the application is suspended or the 49: /// page is discarded from the navigation cache. Values must conform to the serialization 50: /// requirements of <see cref="SuspensionManager.SessionState"/>. 51: /// </summary> 52: /// <param name="pageState"> 53: /// An empty dictionary to be populated with serializable state.</param> 54: protected override void SaveState(Dictionary<String, Object> pageState) 55: { 56: // save groups and items to JSON string so that 57: // it's possible to restore page state later 58: base.SaveState(pageState); 59: System.Runtime.Serialization.Json.DataContractJsonSerializer rootSer = 60: new System.Runtime.Serialization.Json.DataContractJsonSerializer 61: (typeof(List<Group>)); 62: var stream = new MemoryStream(); 63: rootSer.WriteObject(stream, _groups); 64: string str = System.Text.Encoding.UTF8.GetString(stream.ToArray(), 65: 0, (int)stream.Length); 66: pageState.Add("Groups", str); 67: } 68: ? 69: /// <summary> 70: /// Invoked when this page is about to be displayed in a Frame. 71: /// </summary> 72: /// <param name="e">Event data that describes 73: /// how this page was reached. The Parameter 74: /// property is typically used to configure the page.</param> 75: protected override void OnNavigatedTo(NavigationEventArgs e) 76: { 77: // restore page state 78: var frameState = 79: GridViewSamples.Common.SuspensionManager.SessionStateForFrame(this.Frame); 80: if (frameState.ContainsKey("TilePageData")) 81: { 82: this.LoadState(e.Parameter, 83: (Dictionary<String, Object>)frameState["TilePageData"]); 84: } 85: else 86: { 87: this.LoadState(e.Parameter, null); 88: } 89: } 90: ? 91: protected override void OnNavigatedFrom(NavigationEventArgs e) 92: { 93: // save page state with "TilePageData" key 94: var frameState = 95: GridViewSamples.Common.SuspensionManager.SessionStateForFrame(this.Frame); 96: var pageState = new Dictionary<String, Object>(); 97: this.SaveState(pageState); 98: frameState["TilePageData"] = pageState; 99: }

總結

GridViewEx控件豐富了GirdView控件功能,改進了基礎功能,提升用戶體驗。到此已經實現了GridView項與Windows8開始菜單具有的相同用戶體驗,如果你想了解如何在Windows10平臺下開發UWP引用,請持續關注下篇文章:如何在Windows10中開發UWP應用

除了?GirdView 以外,具備觸摸和鍵盤導航操作的自動或手動平鋪布局的控件還有ComponentOne TileControl for WinForms,它不但提供自適應Windows8的樣式布局,還具有類似Windows8風格的交互體驗和靈活便捷的定制能力。

原文鏈接:http://www.codeproject.com/Articles/536519/Extending-GridView-with-Drag-and-Drop-for-Grouping

總結

以上是生活随笔為你收集整理的扩展GridView控件——为内容项添加拖放及分组功能的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

欧美日韩不卡一区二区三区 | 国产96av| 色婷婷六月天 | 97国产大学生情侣白嫩酒店 | 成人精品影视 | 久久久久久久久久久免费av | 亚洲h在线播放在线观看h | av在线激情| 免费一级特黄毛大片 | 亚洲v精品 | 91大片网站 | 久久国产精品99久久久久 | 天天操伊人 | 久久久久久黄 | 久久乱码卡一卡2卡三卡四 五月婷婷久 | 一级黄色片在线免费看 | 精品久久久一区二区 | 五月婷婷导航 | 在线观看亚洲电影 | 丁香婷婷综合网 | 日韩精品一区二区三区高清免费 | 在线观看岛国av | 亚洲国产精品成人精品 | 成人h动漫在线看 | 麻豆91在线播放 | 成人免费一级 | 高清av网站 | 91精品国自产在线观看欧美 | 免费在线观看av网址 | 日韩中文字幕在线 | 麻豆免费精品视频 | 欧美成人视 | 视频二区在线视频 | 波多野结衣小视频 | 毛片永久免费 | 蜜臀久久99精品久久久久久网站 | 色偷偷网站视频 | 色国产精品一区在线观看 | 色五月色开心色婷婷色丁香 | 婷婷中文在线 | 久久99久久99精品中文字幕 | 日韩欧美综合在线视频 | 九九有精品 | 亚洲一区二区三区四区在线视频 | 不卡视频一区二区三区 | 超碰在线中文字幕 | 亚洲激情综合网 | 免费人成网 | 亚洲视频在线观看 | 91.精品高清在线观看 | 精品国产免费人成在线观看 | 久久国产99 | 中文字幕一区二区三区在线播放 | 日韩av一区二区在线影视 | 中文字幕av在线播放 | 亚洲综合成人婷婷小说 | 久久久久成人精品免费播放动漫 | 99久久日韩精品免费热麻豆美女 | 国产免费成人av | 区一区二区三区中文字幕 | 国产美女搞久久 | 国产免费又爽又刺激在线观看 | 日本久久电影 | 91理论电影| 操操操夜夜操 | 久久不射电影网 | 在线免费视频你懂的 | av中文字幕日韩 | 一区二区精品视频 | 亚洲天天 | 激情婷婷在线观看 | 成人免费中文字幕 | 成人国产精品一区二区 | 西西4444www大胆无视频 | 国产精品久久久久久久久大全 | 在线欧美小视频 | 免费福利小视频 | 日韩免费视频线观看 | 人人澡超碰碰97碰碰碰软件 | 欧美日韩激情网 | av天天草 | 久久久久久久国产精品视频 | 欧美日韩免费一区二区 | 久草综合在线 | 在线观看免费日韩 | 亚洲一区日韩在线 | 欧美一级淫片videoshd | 精品少妇一区二区三区在线 | 天天爱天天操天天干 | 亚洲精品免费播放 | 国产1区在线观看 | 色欲综合视频天天天 | 69国产成人综合久久精品欧美 | 欧美日韩高清不卡 | 成人在线观看日韩 | 99国产视频| 超碰97中文| 国产欧美在线一区二区三区 | 日韩色视频在线观看 | 在线观看免费国产小视频 | 在线综合色 | 美女网站在线观看 | 激情视频亚洲 | 伊人色播 | 婷婷五天天在线视频 | 国产99久久精品一区二区永久免费 | 插婷婷 | 狠狠干网 | 98超碰人人 | 欧美一进一出抽搐大尺度视频 | 国产色啪 | 久久久久久久久久久久av | 日韩1级片 | 欧美日本在线视频 | av在线电影网站 | 丁香婷婷社区 | 又黄又爽又刺激 | 久久伊人婷婷 | 午夜av大片 | 一区二区免费不卡在线 | 天天操夜夜叫 | 国产小视频在线 | 久久综合干 | 9幺看片 | 国产黄色片久久久 | 国产青草视频在线观看 | 久久成人亚洲欧美电影 | 国产精品成人一区二区三区吃奶 | 天天操天天摸天天射 | 精品视频 | 中文字幕在线观 | 在线电影播放 | 91亚色免费视频 | 国产精品久久久久毛片大屁完整版 | 天天爽天天做 | 91视频高清免费 | 97综合在线 | 97av视频在线观看 | 天天射综合 | 欧美在线1区 | 国产精品一区二区在线免费观看 | 久久久久久久久久久成人 | 超碰在线日韩 | 五月婷婷综合网 | 成人黄色电影视频 | 久久久久久亚洲精品 | 欧美日本在线视频 | 在线观看中文字幕亚洲 | 国产精品嫩草在线 | 日韩一区二区在线免费观看 | 欧美精品在线视频 | 特级黄录像视频 | 日韩动漫免费观看高清完整版在线观看 | av在线播放中文字幕 | www99精品 | 中文字幕在线免费观看视频 | 欧美日韩xxxxx | 又黄又刺激视频 | 四虎国产精品成人免费影视 | 狠狠干干 | 亚洲免费在线观看视频 | 亚洲综合五月天 | 成人免费视频视频在线观看 免费 | 日韩电影一区二区在线观看 | 国产999精品久久久久久绿帽 | 一区二区电影在线观看 | av免费看av| 婷婷色五| 福利视频一区二区 | 精品一区精品二区 | 99精品视频在线观看播放 | 欧美一级激情 | 国产中文字幕在线免费观看 | 久久视频免费观看 | 国内精品久久久久久久久 | 天天操天天添天天吹 | 国产成人无码AⅤ片在线观 日韩av不卡在线 | 日韩手机视频 | 婷婷六月丁香激情 | 97中文字幕 | 色播五月激情综合网 | 中文字幕av日韩 | 狠狠色伊人亚洲综合网站野外 | 日韩免费在线网站 | 成人午夜黄色影院 | 在线观看韩日电影免费 | 黄色特级片 | 99精品久久久| 免费精品国产 | 97超碰国产精品女人人人爽 | 伊人久久一区 | 国产综合片| 99久久精品久久久久久动态片 | 天天躁天天躁天天躁婷 | 日韩在线免费电影 | 欧美激情精品久久久 | 综合久久久久久 | 最新av观看 | 日韩欧美精品在线观看视频 | 成人在线播放免费观看 | 久草精品在线 | 日韩美在线观看 | 国产在线视频在线观看 | 97在线观看免费视频 | 日韩区视频| 在线亚洲精品 | 91av电影在线观看 | 99热这里只有精品在线观看 | 二区三区精品 | 欧美日韩视频精品 | 人人干,人人爽 | 天天操天天插 | av短片在线观看 | 久久理论电影 | 久久免费黄色 | 国产高清专区 | 欧美极品一区二区三区 | 亚洲久草视频 | 亚洲一区二区精品在线 | www.夜夜干.com| 在线国产精品视频 | 亚洲人成免费 | 久久男人中文字幕资源站 | 69视频在线 | 五月天中文字幕 | 视频国产在线 | 欧美日韩性视频在线 | 亚洲黄色免费 | 久久久久99精品成人片三人毛片 | 蜜臀久久99精品久久久无需会员 | 黄色在线免费观看网站 | 最新精品国产 | 亚洲午夜精品一区二区三区电影院 | 97超碰在线久草超碰在线观看 | 中文字幕一区二区三区在线播放 | 黄色大片免费播放 | 欧美一区二区三区激情视频 | 国产不卡视频在线 | 亚洲天堂网在线播放 | 亚洲精品玖玖玖av在线看 | 国产精品理论在线观看 | 日韩在线中文字幕 | 亚洲精品视频在线观看免费视频 | 成全在线视频免费观看 | 91刺激视频 | 亚洲年轻女教师毛茸茸 | 久在线观看视频 | 亚洲天堂网视频在线观看 | 91av中文字幕| 久久精品免费播放 | 亚洲激情 欧美激情 | 久久综合五月天婷婷伊人 | 久久久久国产精品厨房 | 在线观看日本高清mv视频 | 一区三区视频 | 精品毛片久久久久久 | 97超碰人| av网站在线观看播放 | 日韩av免费网站 | 碰天天操天天 | 成人av动漫在线 | 91免费在线播放 | 国产精品久久久久久久久久久杏吧 | 日韩在线小视频 | 少妇bbb搡bbbb搡bbbb | 国产免费激情久久 | 性色va | 国产麻豆果冻传媒在线观看 | 在线看毛片网站 | 国产精品一区电影 | 日韩av一区二区三区在线观看 | 国产日韩欧美中文 | 超碰在线观看av.com | 欧美影片 | 色99在线| 天天做日日爱夜夜爽 | 伊人伊成久久人综合网站 | 日韩一区视频在线 | 成人97人人超碰人人99 | 在线之家免费在线观看电影 | 国产一级黄色片免费看 | 欧美美女视频在线观看 | 国产欧美久久久精品影院 | 国产精品自产拍在线观看 | 久草在线观 | 在线观看免费国产小视频 | 久久久久伦理电影 | 亚洲午夜久久久久 | 96av麻豆蜜桃一区二区 | www色网站| 日韩av一区二区三区在线观看 | 亚洲欧美综合精品久久成人 | 国产在线观看不卡 | 免费看黄20分钟 | 在线日本看片免费人成视久网 | 久久在草| 一区二区视频在线观看免费 | 成片人卡1卡2卡3手机免费看 | 国产va精品免费观看 | 免费毛片一区二区三区久久久 | 在线观看免费一级片 | 国产精品18久久久久久久网站 | 亚洲四虎 | 国产黄色大片 | 天天爽天天爽 | 在线播放视频一区 | 国产高清av免费在线观看 | 亚洲国产成人精品在线观看 | 成人av中文字幕在线观看 | ww视频在线观看 | 欧美巨大 | 三级黄色片子 | 久久精品一区二区三区四区 | 欧美性视频网站 | 91视频网址入口 | 国产精品免费观看视频 | 亚洲视频在线观看免费 | 久久精品免视看 | 久久女同性恋中文字幕 | 99久久爱 | av片中文| 色就色,综合激情 | 日韩高清一 | 久久综合久久综合久久 | 97国产在线视频 | 免费看黄在线 | 国产精品三级视频 | 国产精品成久久久久三级 | 欧美性视频网站 | 日韩一区二区在线免费观看 | 免费看网站在线 | 日韩一区正在播放 | 成人夜晚看av | 国产成人久久精品77777 | 91视频成人免费 | 国产精彩在线视频 | 狠狠躁日日躁夜夜躁av | 久草青青在线观看 | 欧美日本日韩aⅴ在线视频 插插插色综合 | 欧美性极品xxxx做受 | 国产精品视频专区 | 正在播放久久 | 天天色天天操综合 | 欧美日韩一区二区免费在线观看 | 91在线91 | av大片网址 | 国产三级香港三韩国三级 | 日本精品视频在线 | 激情综合电影网 | 日日弄天天弄美女bbbb | 成人一区二区在线 | 成人日批视频 | 亚洲成av人影片在线观看 | a视频免费在线观看 | 久草在线费播放视频 | 日韩大片在线免费观看 | 午夜精品久久久久久久99水蜜桃 | 久久精品视频免费 | 国产午夜精品免费一区二区三区视频 | 精品美女久久久久 | 亚洲综合在线一区二区三区 | 久久视频一区 | 日韩精品久久中文字幕 | 九九热在线免费观看 | 青青河边草手机免费 | 国产精品一区二区三区久久 | 国产精品久久久久免费 | 中文字幕在线观 | 天天色 天天 | 99爱在线观看 | 91在线免费视频观看 | 中国一级特黄毛片大片久久 | 国产午夜三级一区二区三桃花影视 | 97电影手机版 | 91麻豆精品国产自产在线游戏 | 免费看网站在线 | 免费高清在线观看成人 | 啪啪免费观看网站 | 综合天堂av久久久久久久 | 欧美成人999| 久久久久国产精品免费免费搜索 | 播五月综合| 国产99久久精品 | 精品a级片| 伊人超碰在线 | 亚洲日本va午夜在线影院 | 国产高清在线免费观看 | 狠狠干成人综合网 | 久一久久 | 女人18片毛片90分钟 | 亚洲国产精品日韩 | 成年人视频免费在线 | 91九色蝌蚪视频网站 | 日韩在线精品视频 | 九九九在线观看 | 91麻豆操 | 中文字幕视频播放 | 国产精品福利在线播放 | 亚洲爱爱视频 | 成人av在线影院 | 美女精品久久久 | 在线日韩中文字幕 | 四虎成人免费观看 | 99色在线播放 | 超碰人人干人人 | 91亚洲精品乱码久久久久久蜜桃 | 五月婷婷丁香激情 | 在线 高清 中文字幕 | 黄色免费视频在线观看 | 欧美xxxxx在线视频 | 狠色狠色综合久久 | 国产中的精品av小宝探花 | 亚洲三级精品 | 在线精品播放 | 国产精品一区二区你懂的 | 大胆欧美gogo免费视频一二区 | 中文国产字幕在线观看 | 黄av免费在线观看 | 五月激情丁香婷婷 | 免费在线观看91 | 国产精品色 | 伊人影院在线观看 | 99视频在线精品免费观看2 | 97电影手机版 | 久久99中文字幕 | 98精品国产自产在线观看 | 日韩一区二区在线免费观看 | 国产精品免费在线播放 | 精品91视频 | 96精品视频 | 成人国产一区二区 | 黄色成人毛片 | 久久99久| 成人在线免费看视频 | 国产成人av电影 | 一级黄毛片 | 天天干,天天操 | 六月丁香综合 | 久久久久国产精品厨房 | 久久一区二区三区超碰国产精品 | 九九免费在线观看视频 | 欧美一区二区三区特黄 | 久久精品欧美一区 | 香蕉影视 | 国产精品www | 久久综合狠狠综合久久综合88 | 日日碰狠狠躁久久躁综合网 | 国产精品男女 | 国产中文字幕av | 中文字幕在线高清 | 有码中文字幕在线观看 | 超碰在线观看av.com | 国产精品私人影院 | 日韩精品91偷拍在线观看 | www.成人精品 | 97在线观看免费 | 久久嗨 | 色综合 久久精品 | 国产在线a| 激情视频免费在线 | 亚洲综合视频在线 | 一区二区三区免费在线观看视频 | 视频成人永久免费视频 | 国产亚洲精品日韩在线tv黄 | www.超碰97.com| 中文字幕国产在线 | 国产精品系列在线观看 | 中文字幕一区二区三区在线视频 | 国产网红在线观看 | 日韩中文字幕亚洲一区二区va在线 | 在线91av| 狠狠躁夜夜躁人人爽超碰97香蕉 | 天天干夜夜干 | 伊人首页 | 激情综合中文娱乐网 | 1024在线看片 | 人人干免费 | 男女视频久久久 | 天天综合入口 | 爱色av.com | 一区二区av | 91亚洲狠狠婷婷综合久久久 | 久久婷婷五月综合色丁香 | 国产黄色精品 | 手机在线黄色网址 | 欧美极品少妇xxxx | 久草在线资源网 | 91在线视频观看免费 | 亚洲国产欧美在线看片xxoo | 国产黄影院色大全免费 | 日韩精品不卡 | 成人h在线观看 | 婷婷色综合色 | 91夜夜夜| 99r在线| 免费高清无人区完整版 | 成人黄色在线 | 亚洲成人麻豆 | 激情欧美一区二区三区免费看 | 免费观看日韩 | 久久九九国产精品 | 久久久午夜精品福利内容 | 4hu视频 | 懂色av懂色av粉嫩av分享吧 | 欧美经典久久 | 婷婷激情在线观看 | 成年人视频免费在线 | 久久精品日产第一区二区三区乱码 | 香蕉网在线观看 | 国产精品国产三级国产不产一地 | 中文不卡视频在线 | 91人人射| 天天摸天天弄 | 色婷婷天天干 | 中文字幕一区二区三区四区 | 少妇av网 | 亚洲精品中文字幕在线观看 | 成人激情开心网 | 丁香九月婷婷综合 | 天天玩天天操天天射 | www五月天婷婷 | av日韩在线网站 | 婷婷色网视频在线播放 | 在线综合 亚洲 欧美在线视频 | 深夜男人影院 | 久久久久久久久久久免费视频 | 99久热 | 激情av五月婷婷 | 午夜精品一区二区三区视频免费看 | 久久久久免费观看 | 国产精品久久久久久久久软件 | 亚洲精品777 | 国产91aaa| 麻豆视频免费看 | 操操操日日日干干干 | 黄色网www | 一区二区三区四区五区在线 | 日韩精品中文字幕有码 | 免费黄色在线 | 亚洲欧美日韩一区二区三区在线观看 | 久草在线一免费新视频 | 午夜av免费看 | 在线免费观看不卡av | 国产黄网站在线观看 | 成人免费在线视频 | 欧美视频xxx | 中文国产成人精品久久一 | 免费精品人在线二线三线 | 国产精品黄色av | 国产小视频你懂的 | 在线高清av | 亚洲精品视频国产 | 国产成人精品一区二 | 欧美乱淫视频 | a爱爱视频| 在线导航av| 国产亚洲人成网站在线观看 | 五月天视频网 | 欧美日韩亚洲第一页 | 久久96国产精品久久99软件 | 精品国产一区二区三区在线 | 香蕉久久久久 | 在线观看的a站 | av电影中文 | 欧美日韩不卡一区 | 500部大龄熟乱视频使用方法 | 国产精品久久久久亚洲影视 | 色婷婷综合视频在线观看 | 在线看v片| 综合久久五月天 | 亚洲免费在线视频 | av一区二区在线观看中文字幕 | 日本高清久久久 | 色综合天天天天做夜夜夜夜做 | 国产亚洲婷婷 | 免费黄色网止 | 欧美夫妻性生活电影 | 99精品国产成人一区二区 | 国产精品久久久免费 | 在线观看免费视频 | 深爱开心激情 | 日韩欧美国产精品 | 最新av在线免费观看 | 国产一区福利 | 91视频在线免费下载 | 91免费高清在线观看 | 97精品国产一二三产区 | 高清中文字幕 | 亚洲人成在线电影 | 久久精品久久久久电影 | 香蕉影院在线播放 | 日韩在线视频一区 | 成人黄色资源 | 国产成人久久精品77777综合 | 福利视频网站 | 亚洲精品在线看 | 精品无人国产偷自产在线 | 麻豆视频在线观看 | 中文字幕一区二区三区四区在线视频 | 五月天久久婷 | 国产在线视频资源 | 久久少妇免费视频 | 综合色站导航 | 午夜免费电影院 | 久久av在线 | 久久久久国产一区二区 | 久久精品久久精品久久39 | 香蕉久久久久久av成人 | av一区二区三区在线观看 | 综合网伊人| 91精品视频一区 | 91成品人影院| 91在线视频免费观看 | 欧美日韩性生活 | 日本99久久 | 国产精品久久久久影院日本 | www视频免费在线观看 | av手机版 | 免费男女羞羞的视频网站中文字幕 | 97在线免费观看 | 在线观看免费中文字幕 | 91av电影在线观看 | 日本资源中文字幕在线 | 国产精品免费观看网站 | 手机看国产毛片 | 精品国产精品久久 | 9幺看片 | 亚洲做受高潮欧美裸体 | 日韩精品免费一区二区 | 国产精品美女久久久久久久 | 国产精品久久久久久五月尺 | 亚洲理论视频 | 久久香蕉一区 | 精品一区二区在线免费观看 | 国产精品免费久久久 | 97看片网 | 久久夜色精品国产欧美乱极品 | 国产午夜精品av一区二区 | 欧美激情综合色综合啪啪五月 | 免费看国产曰批40分钟 | 久久久91精品国产一区二区精品 | 免费视频三区 | 欧美精品xxx | 精品在线观看一区二区 | 成人毛片一区 | 久久久久久精 | 女人18片毛片90分钟 | 久久久久亚洲精品成人网小说 | 久久艹在线观看 | 午夜精品久久久久久久久久久 | 天天干天天射天天插 | 久久久影院官网 | 在线黄网站 | 色网站免费在线观看 | 国产免费影院 | 99精品黄色片免费大全 | 免费观看一级成人毛片 | 国产在线超碰 | 另类老妇性bbwbbw高清 | 色99视频| 人交video另类hd| 中文字幕黄网 | 亚洲最大av | 日韩一级片观看 | 精品视频999 | av免费在线看网站 | 丁香六月中文字幕 | 中国一级片免费看 | 国产呻吟在线 | 欧美另类xxxx | 久久影视中文字幕 | 一级特黄aaa大片在线观看 | 欧美午夜一区二区福利视频 | 久久成人欧美 | 中文伊人| 草久久影院 | 蜜臀久久99精品久久久无需会员 | 久久久鲁 | 亚洲国产福利视频 | 日韩视频一区二区三区 | 久久久久久久久久影院 | 亚洲综合色播 | 999精品| 精品国产自 | 天天综合色天天综合 | 粉嫩aⅴ一区二区三区 | 欧美精品久久久久 | 中文字幕国产亚洲 | 成人黄色在线视频 | 精品综合久久久 | 国产精品美女久久久免费 | 一区二区精品视频 | 国产精品中文字幕在线播放 | 天天色棕合合合合合合 | 五月婷婷六月丁香激情 | 久操伊人| 一区二区视频在线看 | www.日日操.com| 13日本xxxxxⅹxxx20 | 色亚洲激情| 国产日本亚洲高清 | 色婷婷www| 久久色网站 | 欧美一级日韩三级 | 亚洲a资源 | 深爱开心激情网 | 激情影音先锋 | 黄色网址国产 | 国产日韩一区在线 | 亚洲国产免费看 | 在线视频一二三 | 欧洲精品亚洲精品 | 国产免费嫩草影院 | 最近日本mv字幕免费观看 | 人人看人人草 | 成人久久18免费网站 | 97在线影视 | 色婷婷丁香 | 亚洲a成人v | 久久久久国产成人精品亚洲午夜 | 国产91免费看 | 97成人精品视频在线播放 | www.eeuss影院av撸 | 人人爽人人澡人人添人人人人 | 国产精品久免费的黄网站 | 蜜桃视频在线视频 | 极品久久久久久久 | 亚洲www天堂com | 国产麻豆视频免费观看 | 96久久 | 深爱激情久久 | 亚洲国产美女精品久久久久∴ | 日韩高清在线一区二区 | 日本xxxx裸体xxxx17 | av黄色影院 | 亚洲国产精品第一区二区 | 国产精品视频线看 | 日韩 精品 一区 国产 麻豆 | 欧美激情操 | 国产二区精品 | 久草热久草视频 | 成人在线观看资源 | 狠狠做深爱婷婷综合一区 | 狠狠干 狠狠操 | 97天堂| 99爱精品在线 | 久久视讯 | 国产视频一二三 | 国产视频69 | 中文免费观看 | 久久久久久久久毛片精品 | 在线免费观看黄色av | 色播五月激情综合网 | 欧美精品一区二区性色 | 免费中午字幕无吗 | 成年人视频免费在线播放 | 麻豆影视在线观看 | 一本—道久久a久久精品蜜桃 | 日本公妇在线观看高清 | 亚洲va韩国va欧美va精四季 | 麻豆国产视频 | 亚洲综合丁香 | 成人日韩av| 国产视频精品久久 | 成人在线播放免费观看 | 日韩无在线 | 亚洲在线成人精品 | 色婷婷久久久 | 深夜免费福利网站 | 成人免费观看在线视频 | 久二影院 | 五月激情丁香婷婷 | 色婷婷综合久久久中文字幕 | 黄网站免费看 | 色婷婷亚洲综合 | 狠狠躁日日躁 | 国产精品久久久久久久久久久久午夜 | 狠狠久久 | 男女啪啪视屏 | 亚洲五月 | 99在线视频免费观看 | 中文字幕av最新更新 | 亚洲日本va中文字幕 | 亚洲综合色丁香婷婷六月图片 | 91精品国自产拍天天拍 | 国产精品婷婷午夜在线观看 | 国产精品mm | 色视频国产直接看 | 99人成在线观看视频 | 日韩大片免费在线观看 | 色综合中文字幕 | 免费在线色| 精品国产乱码久久久久久天美 | 久久99久国产精品黄毛片入口 | 99免费| 久久曰视频 | 国产精品网站 | 久久久黄色 | 网站你懂的 | 狠狠色丁香久久综合网 | 一本一道久久a久久精品 | 精品久久久久久久久久久院品网 | 99久免费精品视频在线观看 | 国产一区在线视频播放 | 国产精品乱码久久久久 | 国产在线免费观看 | 日韩精品中文字幕有码 | 免费h漫在线观看 | 国产精品999久久久 久产久精国产品 | 日本爱爱片 | 91精品在线视频观看 | 九月婷婷人人澡人人添人人爽 | 黄色小说网站在线 | 国产资源站| 免费在线黄色av | 毛片激情永久免费 | 久久久久亚洲精品男人的天堂 | 婷婷激情综合网 | 午夜精品久久久久久久久久 | 久精品在线观看 | 91在线播放视频 | 96亚洲精品久久久蜜桃 | 在线直播av | 综合色在线| 国产成人三级在线观看 | 91成品人影院 | 国产一级黄大片 | 黄色免费av| 国产香蕉97碰碰碰视频在线观看 | 日韩有码在线观看视频 | 国产在线传媒 | 日日草视频 | 国产成人精品日本亚洲999 | 最新真实国产在线视频 | 99热国产在线 | 97在线观看视频 | 久久精品久久精品久久精品 | 国产精品一区二区中文字幕 | 欧美激情精品久久久久久变态 | a级成人毛片 | 亚洲涩涩一区 | 成年人在线免费看 | 久久久久亚洲天堂 | 久久久精品视频网站 | 18性欧美xxxⅹ性满足 | 中文成人字幕 | 毛片网在线观看 | 日韩欧美成| 奇米网8888| 在线观看成人小视频 | 91视频午夜 | 丁香六月久久综合狠狠色 | 免费99视频 | 国产理论免费 | 免费视频国产 | 国产亚洲精品久久久久久无几年桃 | 麻豆va一区二区三区久久浪 | 久久99中文字幕 | 97视频人人澡人人爽 | 91视频91自拍| 不卡视频在线 | a天堂一码二码专区 | 91成人欧美 | 91黄色在线观看 | 久久手机免费观看 | 亚洲美女在线国产 | 国产96在线视频 | 亚洲少妇久久 | 久久伦理| 免费视频一区二区 | 99国内精品久久久久久久 | 中国黄色一级大片 | 青青草在久久免费久久免费 | 亚洲爱视频 | 久久精品国产亚洲aⅴ | 日韩在线免费小视频 | 99精品国产在热久久 | 国产手机av | 午夜骚影 | 免费人成在线观看网站 | 麻豆视传媒官网免费观看 | 久久久久免费电影 | av黄色一级片 | 久久久国产精品成人免费 | 91免费在线看片 | 久久五月精品 | 成人精品视频久久久久 | 伊甸园永久入口www 99热 精品在线 | 久久免费视频网站 | 国产精华国产精品 | 最新国产精品拍自在线播放 | 国产精品白浆 | 亚洲久草网 | 国产馆在线播放 | 91人人澡人人爽 | 久久成人午夜视频 | 国产看片 色 | a爱爱视频 | 婷婷5月色 | 粉嫩av一区二区三区四区在线观看 | 欧美日韩免费一区二区 | 亚洲国产精品一区二区尤物区 | 毛片网站免费 | 日韩丝袜在线 | 欧美久久久久久久久久久 | 欧美日韩三区二区 | 亚洲天天摸日日摸天天欢 | 精品一区二区精品 | 国产福利91精品一区二区三区 | 在线视频一区观看 | 国产成人在线网站 | 在线视频欧美日韩 | 久草免费福利在线观看 | 国产精品高清av | 国产美女免费观看 | 毛片视频网址 | 高清av影院 | 中文字幕在线观看免费观看 | 99热日本| 日韩高清在线一区 | 伊人超碰在线 | 国产精品日韩久久久久 | 国产亚洲精品久久 | 国产精品欧美精品 | 日本精品视频免费观看 | 亚洲人人av | 久久免费视频6 | 国产精品一区二区精品视频免费看 | 国产一级在线视频 | 久久视频在线看 | 天天操天天干天天玩 | 国产亚洲资源 | 国产欧美日韩视频 | 玖玖视频在线 | 五月天,com | 在线观看不卡视频 | 国产成人精品午夜在线播放 | 日韩高清一 | 91精品一区二区三区蜜臀 | 久久国产综合视频 | 97热久久免费频精品99 | 成年人视频免费在线播放 | 尤物一区二区三区 | 亚洲精品美女久久17c | 天天操福利视频 | 免费看av片网站 | 国产高清在线免费视频 | 99精品视频免费看 | 亚洲黄色激情小说 | 五月精品| 97色婷婷成人综合在线观看 | 欧美巨乳波霸 | 国产精品九九久久99视频 | 视频成人 | 在线a人片免费观看视频 | 午夜在线免费视频 | 一区二区精品在线 | 久久久久国产成人免费精品免费 | 激情欧美xxxx | 亚洲精品高清视频 | 国产99视频在线观看 | 亚州国产精品久久久 | 91在线国内视频 | 国产成人av片| 少妇bbb好爽| 欧美精品在线视频 | 色综合久久天天 | av在线com | 日韩三级av | 日韩电影一区二区三区 | 亚洲 欧美 成人 | 六月丁香在线视频 | 五月激情综合婷婷 | 国产乱对白刺激视频不卡 | 999色视频| 麻豆一精品传二传媒短视频 | 激情六月婷婷久久 | 久久久久久久久久久久av | 国产一区免费视频 | 高清不卡一区二区三区 | 亚洲一区视频免费观看 | 欧美色888| 国产成人精品综合久久久久99 | 99精品免费 | 久久综合婷婷 | 国产不卡视频 | 精品三级av| 欧美一区二区三区在线看 | 91色网址 | 日韩精品一卡 | 午夜精品一二区 | 国产日本在线播放 | 精品视频国产 | 免费看三级黄色片 | 国产精品国产三级国产aⅴ入口 | 韩国av三级 | 五月天婷婷视频 | 日产中文字幕 |