房地产市场现状分析2022,百度网站优化,赣州网站推广公司电话,wordpress约课系统VirtualizingStackPanel虚拟化元素
VirtualizingStackPanel 类#xff08;虚拟化元素#xff09;和StackPanel 类在用法上几乎差不多。其作用是在水平或垂直的一行中排列并显示内容。它继承于一个叫VirtualizingPanel的抽象类#xff0c;而这个VirtualizingPanel抽象类继承…VirtualizingStackPanel虚拟化元素
VirtualizingStackPanel 类虚拟化元素和StackPanel 类在用法上几乎差不多。其作用是在水平或垂直的一行中排列并显示内容。它继承于一个叫VirtualizingPanel的抽象类而这个VirtualizingPanel抽象类继承于Panel布局基类。
1. VirtualizingStackPanel 作用
比如在ListBox集合控件中需要显示500条数据那整个屏幕只能显示20条剩余的480条数据在ListBox控件要不要一次性绘制出来其实就算绘制出来用户的屏幕也看不见只能是拖动滚动条才能看见后面的数据。既然屏幕只能显示20条数据何不只绘制20条数据的UI子元素剩下的480条数据的子元素在拖动滚动条时才绘制这将大大减少计算机的性能消耗提高UI界面的呈现速度提高软件的流畅性。其实就是所谓的延迟加载。
所以VirtualizingStackPanel 类的作用是开启虚拟化技术延迟那些看不见的子元素的绘制与渲染。
要开启这项技术只需要设置Listbox集合控件的附加属性**VirtualizingStackPanel.IsVirtualizing“True”**即可。因为ListBox的ItemsPanel元素布局模板默认采用了VirtualizingStackPanel控件布局。
Canvas控件绝对布局
Canvas控件允许我们像Winform一样拖拽子控件进行布局而子控件的位置相对于Canvas来说是绝对的所以我将它称为绝对布局。我们来看看它的结构定义
public class Canvas : Panel
{public static readonly DependencyProperty LeftProperty;public static readonly DependencyProperty TopProperty;public static readonly DependencyProperty RightProperty;public static readonly DependencyProperty BottomProperty;public Canvas();public static double GetBottom(UIElement element);public static double GetLeft(UIElement element);public static double GetRight(UIElement element);public static double GetTop(UIElement element);public static void SetBottom(UIElement element, double length);public static void SetLeft(UIElement element, double length);public static void SetRight(UIElement element, double length);public static void SetTop(UIElement element, double length);protected override Size ArrangeOverride(Size arrangeSize);protected override Geometry GetLayoutClip(Size layoutSlotSize);protected override Size MeasureOverride(Size constraint);}观察它的结构我们可以看到它提供了4个依赖属性分别是LeftPropertyRightPropertyTopProperty和BottomProperty。其实是将这4个属性附加到子元素身上以此来设置子元素距离Canvas上下左右的像素位置。
1. 不设置属性情况下 CanvasButton Content1 Margin5 /Button Content2 Margin5 /Button Content3 Margin5 /Button Content4 Margin5 /Button Content5 Margin5 //Canvas没有指定button控件在Canvas控件中的上下左右停靠位置所以这5个button默认会显示在Canvas的左上角且只能显示最后一个前面4个会被遮盖。
2. 设置布局属性 CanvasButton Content1 Margin5 Canvas.Left50/Button Content2 Margin5 Canvas.Top50/Button Content3 Margin5 Canvas.Right50/Button Content4 Margin5 Canvas.Bottom50/Button Content5 Canvas.Left200 Canvas.Top150 //Canvas第一个button设置了Canvas.Left“50”它将保持距离Canvas左边50像素。 第二个button设置了Canvas.Top“50”它将保持距离Canvas顶部50像素。 第三个button设置了Canvas.Right“50”它将保持距离Canvas右侧50像素。 第四个button设置了Canvas.Bottom“50”它将保持距离Canvas底部50像素。 第五个button设置了Canvas.Left“200” Canvas.Top“150”也就是同时距离Canvas左边200像素顶部150像素。