如果Grid中有TextBlock,那么设置其宽度和高度的最佳方法(性能方面)是什么?
在TextBlock的属性中设置它们会比将它设置为Grid的属性更好吗?
基本上我要问的是以下哪一项更好:
<Grid Width="200" Height="200">
<TextBlock />
</Grid>
VS
<Grid>
<TextBlock Width="200" Height="200"/>
</Grid>
答案 0 :(得分:0)
在MSDN上的Layout System文章中,有一小部分关于性能,但还有一篇关于optimizing performance of the layout and design的专门文章。也许那里有一些有用的东西。
在我看来,这份文件并没有对这个问题提出任何要求,但这可能无关紧要,或者差异可以忽略不计。
答案 1 :(得分:0)
我真的不明白你在问什么!
但我真的想将我的 Grid 设置为拉伸为Window并设置我的 TextBox Width&amp;自动或NAN的高度,然后定义特殊边距&amp;对齐文本框
答案 2 :(得分:0)
<Grid Width="200" Height="200">
<TextBlock />
</Grid>
纯粹使用Grid来约束TextBox并不是设置TextBox宽度的好方法。网格更多用于布置多个控件。然而,这是完全可以接受的:
<Grid Width="200" Height="200">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="200" />
<ColumnDefinition Width="1*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="1" HorizontalAlignment="Stretch" Margin="5,0" />
</Grid>
这与@Ahmed所建议的一致。
通常使用XAML布局时,建议使用比例布局而不是固定大小,以便可以正确调整UI的大小,同时最大限度地减少对任何代码的监督。这意味着让父元素尽可能地决定大小是好的,只有你必须使用固定大小。 (设置MinWidth / MaxWidth / etc很好,只是尽量避免在可能的情况下明确设置Width,同样适用于Height属性)。
答案 3 :(得分:0)
我没有任何统计数据支持这一点,但由于WPF的渲染/布局引擎首先测量所有内容的子元素,因此可以假设如果手动定义子元素的大小,它会产生边际效应
在这种情况下,如果您所做的只是包装单个TextBlock元素,那么最好使用像<Border>
之类的东西。如果有多个元素,请查看您是否可以使用<StackPanel>
。