网格列按内容宽度调整大小,但受网格宽度限制

时间:2013-01-17 15:10:30

标签: xaml resize grid windows-phone-8

我有以下标记:

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

    <TextBlock x:Name="Col1" Text="Text1" Grid.Column="0" />
    <TextBlock x:Name="Col2" Text="Text12" Grid.Column="1" />
</Grid>

如果我在Col1中放了很多文字,那么它就超出了屏幕,根本看不到Col2。我想改变这种行为,如果Col1中的文字太多,那么它的宽度会减小,以便可以完全看到Col2

另一方面,如果我将标记更改为:

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

    <TextBlock x:Name="Col1" Text="Text1" Grid.Column="0" />
    <TextBlock x:Name="Col2" Text="Text12" Grid.Column="1" />
</Grid>

以下图片说明了我希望TextBlocks的行为:

两个TextBlocks的组合宽度小于屏幕,因此它们一个接一个地进行。 enter image description here

第一个文本块非常长,因此会对其进行裁剪,以便在屏幕中包含第二个TextBlock。 enter image description here

Col1包含大量文字时,一切正常,但当文字数量较小时,Col1Col2之间存在差距。在这两种情况下,我该怎么做才能获得理想的行为?

1 个答案:

答案 0 :(得分:1)

订正;

<Grid HorizontalAlignment="Left">
    <Grid.ColumnDefinitions>
        <ColumnDefinition />
        <ColumnDefinition Width="Auto"/>
    </Grid.ColumnDefinitions>    
    <TextBlock x:Name="Col1" Text="Text1" />
    <TextBlock x:Name="Col2" Text="Text12" Grid.Column="1" TextWrapping="Wrap" />
</Grid>

然后请记住限制它们的整体尺寸,这将放在父面板容器中,就像另一个Grid

一样