让我们来阅读这些代码,我已经在Windows Phone 8项目中定义了两个类似的UserControls,我真的想要哪个更好。 我检查了剖析,看起来他们几乎是一样的。
UserControl 1,使用网格的属性来devise我的布局。
<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" {StaticResource PhoneTextExtraLargeStyle}"></TextBlock> <TextBlock Grid.Row="1" Grid.Column="1" Text="URLURLURLURLURLURL" {StaticResource PhoneTextSmallStyle}"></TextBlock> </Grid>
UserControl 2,使用StackPanel来devise我的布局。
<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" {StaticResource PhoneTextExtraLargeStyle}"></TextBlock> <TextBlock Text="URLURLURLURLURLURL" {StaticResource PhoneTextSmallStyle}"></TextBlock> </StackPanel> </StackPanel> </Grid>
它看起来像基本的布局是一样的。 但是,当我使用XAML Spy来分析可视化树时,UserControl 1的节点较less,但是会花费更多的内存。 为什么?
任何人都可以解释WMI到旧的SNMP章?
为什么叙述者不能把自己作为一个屏幕阅读器报告给windows?
无法在Windows下运行Laravel Homestead(grep错误)
将stdout C文件streamredirect到缓冲区
了解IDirect3DDevice9 ::当它阻塞vsync时的行为
c + + GetKeyState()一些键码不工作
如何保存和使用应用程序的窗口大小?
如何从COM服务器调用释放
编译依赖于ActiveX的C#WinForm,而不注册它
Windows FFmpeg将imges转换成正确帧率的gif
您可能对这个问题的答案感兴趣: 在渲染时间和性能方面,面板的排列顺序是什么?
简短的答案取决于面板有多少个孩子,以及这些元素的大小和位置。 但是在大多数情况下, StackPanel将比Grid更高效,因为它具有更快的度量和安排。
引用接受的答案 :
格
定义一个由列和行组成的灵活的网格区域。
如果使用比例尺寸调整或自动调整大小,这可能是性能最密集的面板。 计算子项目大小可以是项目本地大小与网格指定的布局的复杂组合。 布局也是所有面板中最复杂的。 对于测量通过速度慢到中等性能,安排通过速度慢到中等性能。
StackPanel中
将子元素排列成可以水平或垂直定位的单行。
StackPanel使用原生或相对的尺寸来定位它的子体,方向与其方向相反,并且在其方向上进行原生尺寸调整(在这个方向上排列没有任何变化)。 这使得它成为这个领域的中等水平。 安排通行证是简单的,只是按顺序布置项目。 可能是这个传球的第二好的表现。 测量通过的中等性能和通过布局的快速性能。
同样在内存消耗方面,两个对象都是不同的,并占用不同的内存,一个Grid有RowDeFinitions和ColumnDeFinitions ,所以它实际上包含比你的StackPanel更多的对象
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。