设置TextBlock与Grid的宽度

时间:2011-06-07 01:18:19

标签: wpf height width

如果Grid中有TextBlock,那么设置其宽度和高度的最佳方法(性能方面)是什么?

在TextBlock的属性中设置它们会比将它设置为Grid的属性更好吗?

基本上我要问的是以下哪一项更好:

<Grid Width="200" Height="200">
    <TextBlock />
</Grid>

VS

<Grid>
    <TextBlock Width="200" Height="200"/>
</Grid>

4 个答案:

答案 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>