gpt4 book ai didi

wpf - Grid 和 StackPanel,哪个性能更好?

转载 作者:可可西里 更新时间:2023-11-01 12:25:00 54 4
gpt4 key购买 nike

让我们阅读这些代码,我在 Windows Phone 8 项目中定义了两个相似的 UserControl,我真的很想知道它们中的哪个更好。我检查了分析,似乎它们几乎相同。

UserControl 1,使用网格的属性来设计我的布局。

<Grid x:Name="LayoutRoot" Background="{StaticResource PhoneChromeBrush}" Height="108">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
</Grid.RowDefinitions>

<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"></ColumnDefinition>
<ColumnDefinition Width="*"></ColumnDefinition>
</Grid.ColumnDefinitions>

<Rectangle Grid.RowSpan="2" Grid.Row="0" Height="108" Width="54" Fill="Blue"></Rectangle>
<TextBlock Grid.Row="0" Grid.Column="1" Text="Caption" Style="{StaticResource PhoneTextExtraLargeStyle}"></TextBlock>
<TextBlock Grid.Row="1" Grid.Column="1" Text="URLURLURLURLURLURL" Style="{StaticResource PhoneTextSmallStyle}"></TextBlock>
</Grid>

UserControl 2,使用 StackPanel 设计我的布局。

<Grid x:Name="LayoutRoot" Background="{StaticResource PhoneChromeBrush}" Height="108">
<StackPanel Orientation="Horizontal">
<Rectangle Height="108" Width="54" Fill="Red"></Rectangle>
<StackPanel Orientation="Vertical">
<TextBlock Text="Caption" Style="{StaticResource PhoneTextExtraLargeStyle}"></TextBlock>
<TextBlock Text="URLURLURLURLURLURL" Style="{StaticResource PhoneTextSmallStyle}"></TextBlock>
</StackPanel>
</StackPanel>
</Grid>

看起来基本布局是一样的。但是当我使用 XAML Spy 分析 Visualizing 树时,UserControl 1 的节点较少,但占用的内存稍多。为什么?

最佳答案

您可能对此问题的答案感兴趣:In what order are Panels the most efficient in terms of render time and performance?

简短的回答是,这取决于面板有多少子元素,以及这些元素的大小和位置。但在大多数情况下,StackPanel 将比 Grid 更高效,因为它具有更快的测量和排列传递。

引用自accepted answer :

Grid

Defines a flexible grid area that consists of columns and rows.

如果成比例,这可能是性能最密集的面板 使用大小调整或自动调整大小。计算子项大小可以是 项目的原始大小和布局的复杂组合 由网格指定。布局也是最复杂的 面板。测量通过和慢到中等性能 安排通行证的中等表现。

堆栈面板

Arranges child elements into a single line that can be oriented horizontally or vertically.

StackPanel 使用 native 或相对测量其子项 以与其方向和 native 相反的方向调整大小 沿其方向调整大小(对齐在 这个方向)。这使其成为该领域的中等表现者。这 Arrangement pass 很简单,就是把元素按顺序排列。 可能是此传球的第二好表现。中等性能 测量 channel 和布局 channel 的快速性能。

此外,在内存消耗方面,两个对象不同,占用的内存量也不同,GridRowDefinitionsColumnDefinitions ,所以它实际上包含的对象比您的 StackPanel

关于wpf - Grid 和 StackPanel,哪个性能更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15575854/

54 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com