当前位置: 首页 > news >正文

专门做旅游的视频网站十大免费网站推广平台

专门做旅游的视频网站,十大免费网站推广平台,下载了源码怎么做网站,网站开发了解客户需求WPF列表控件提供的最重要的功能是UI虚拟化(WPF编程宝典说的)。所有的WPF列表控件(所有继承自ItemsControl的控件,包括ListBox、CombBox、ListView、TreeView、DataGrid)都支持UI虚拟化。 UI虚拟化的支持实际上没有被构…

WPF列表控件提供的最重要的功能是UI虚拟化(WPF编程宝典说的)。所有的WPF列表控件(所有继承自ItemsControl的控件,包括ListBox、CombBox、ListView、TreeView、DataGrid)都支持UI虚拟化。

UI虚拟化的支持实际上没有被构建到ListBox或ItemsControl类。而是通过VirtualizingStackPanel容器,除了增加虚拟化的支持,改面板与StackPanel面板功能类似。

ListBox、ListView、DataGrid都自动使用VirtualizingStackPanel面板来布局它们的子元素,所以不需要采取任何额外的步骤。

TreeView也是使用的VirtualizingStackPanel面板,但是默认情况下关闭了该支持,可以通过配置 VirtualizingStackPanel.IsVirtualizing="True" 来启用。

CombBox使用的是StackPanel面板,如果需要支持虚拟化,就必须明确的通过提供新的ItemsPanelTemplate 来添加虚拟化支持。

有一些因素会破坏UI虚拟化支持

1、在ScrollViewer中放置列表控件,ScrollViewer为其子内容提供了一个无限虚拟空间,在这个虚拟空间内,列表控件可以完整尺寸渲染自身,显示所有子项。只要将列表控件放入不会试图限制其尺寸的容器中,就会发生这一问题。例如将ListBox放入StackPanel或者设置Height为Auto的Grid行中。

2、改变列表控件的模板并且没有使用ItemsPresenter。 ItemsPresenter 使用 ItemsPanelTemplate,该模板指定了 VirtualizingStackPanel面板。如果破坏了这种关系或自己改变了ItemsPanelTemplate,从而不使用VirtualizingStackPanel面板,将会失去虚拟化特性。

3、不使用数据绑定。如果通过编程填充列表,那么不会发生虚拟化。

VirtualizingStackPanel面板的一些属性设置

1、启用虚拟化,也就是前面说到的TreeView控件启用虚拟化的方式,配置 VirtualizingStackPanel.IsVirtualizing="True"

2、项容器再循环,可以通过配置 配置 VirtualizingStackPanel.IsVirtualizing="True" .VirtualizationMode="Recyling" 来重复使用子项。

3、缓存长度,通过 VirtualizingStackPanel.CacheLength 与 VirtualizingStackPanel.CacheLengthUnit 来指定缓存长度。

4、滚动单位,通过配置 VirtualizingStackPanel.ScrollUnit 来指定滚动单位,可以是像素Pixel或是子项Item。

可以通过延迟滚动来进一步提升性能,开启延迟滚动后,在滚动滑块时不会更新列表显示,只有当用户释放滚动滑块时才刷新。通过配置 ScrollViewer.IsDeferredScrollingEnabled = "True" 开启

VirtualizationTest.xaml

<Window x:Class="DataBinding.VirtualizationTest"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"Title="FastAndSlowComboBox" Height="300" Width="300" Loaded="Window_Loaded"><Grid Margin="5"><Grid.ColumnDefinitions><ColumnDefinition Width="Auto"></ColumnDefinition><ColumnDefinition></ColumnDefinition></Grid.ColumnDefinitions><Grid.RowDefinitions><RowDefinition Height="Auto"></RowDefinition><RowDefinition Height="*"></RowDefinition><RowDefinition Height="*"></RowDefinition></Grid.RowDefinitions><TextBlock Grid.Row="0" VerticalAlignment="Center">ComboBox:</TextBlock><ComboBox Name="lstFast" Grid.Row="0" Grid.Column="1" Margin="5" ItemsSource="{Binding Path=Datas}" VirtualizingStackPanel.ScrollUnit="Pixel" VirtualizingStackPanel.VirtualizationMode="Recycling" VirtualizingStackPanel.CacheLength="100"><ComboBox.ItemsPanel><ItemsPanelTemplate><VirtualizingStackPanel></VirtualizingStackPanel></ItemsPanelTemplate></ComboBox.ItemsPanel></ComboBox><TextBlock Grid.Row="1" VerticalAlignment="Center">ListBox:</TextBlock><ListBox Name="virtualListBox" Grid.Row="1" Grid.Column="1" Margin="5" ItemsSource="{Binding Path=Datas}" VirtualizingStackPanel.ScrollUnit="Pixel" VirtualizingStackPanel.VirtualizationMode="Recycling" VirtualizingStackPanel.CacheLength="100"/><TextBlock Grid.Row="2" VerticalAlignment="Center">TreeView:</TextBlock><TreeView Name="virtualTreeView" Grid.Row="2" Grid.Column="1" Margin="5" ItemsSource="{Binding Path=Datas}" VirtualizingStackPanel.IsVirtualizing="True"VirtualizingStackPanel.ScrollUnit="Pixel" VirtualizingStackPanel.VirtualizationMode="Recycling" VirtualizingStackPanel.CacheLength="100" VirtualizingStackPanel.CacheLengthUnit="Item"/></Grid>
</Window>

VirtualizationTest.xaml.cs

using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;namespace DataBinding
{/// <summary>/// Interaction logic for VirtualizationTest.xaml/// </summary>public partial class VirtualizationTest : Window{public VirtualizationTest(){InitializeComponent();DataContext = this;}private void InitData(){for (int i = 0; i < 10000; i++){Datas.Add(i.ToString());}}public ObservableCollection<string> Datas { get; set; } = new ObservableCollection<string>();private void Window_Loaded(object sender, RoutedEventArgs e){InitData();}}
}

http://www.hkea.cn/news/856032/

相关文章:

  • 网站开发的原理山西免费网站关键词优化排名
  • 石家庄网站建设全包免费推广网站2024
  • 阿里云网站备案时间无锡seo网站管理
  • 景点介绍网站模板重庆百度关键词推广
  • 做亚马逊网站费用吗曲靖新闻今日头条
  • bing 网站管理员2023今日新闻头条
  • 深圳市做网站前十强百度一下搜索网页
  • 做执法设备有哪些网站国家免费培训学校
  • 顺德乐从有做阿里巴巴的网站吗杭州网站设计
  • 做英文网站 用阿里服务器行吗b2b网站推广排名
  • 搭建网站做淘宝客网赌怎么推广拉客户
  • 网站建设前台与后台最新技术2021最新免费的推广引流软件
  • 做网站基本语言淘宝如何提升关键词排名
  • wordpress怎样分类目录添加标签seo文章范文
  • 订阅号可以做网站吗南宁seo外包服务商
  • 邢台哪儿做网站便宜宁波 seo排名公司
  • 深圳网站优化咨询网上广告怎么推广
  • 网站右击无效是怎么做的网络营销产品
  • 中宣部网站政治建设网站服务器是什么意思
  • 淮安网站定制徐州seo外包公司
  • 嘉兴类网站系统总部网站建设技术解决方案
  • 做网站的教科书外包网络推广公司推广网站
  • 模板名字 wordpress优化大师如何删掉多余的学生
  • 3d网站建设制作百度关键词优化手段
  • 新手做那些网站比较好东莞企业网站排名
  • 欧美风格网站360指数
  • 优秀网站建设公司电话下列哪些店铺适合交换友情链接
  • 58同城乌鲁木齐网站建设重庆网站到首页排名
  • wordpress知言主题山东服务好的seo公司
  • 旅游商务平台网站建设功能需求关键词排名查询官网