如何防止Silverlight xaml Grid中的列占用整行?

时间:2012-02-14 18:22:03

标签: xaml silverlight-4.0

我想在Grid中显示两列。第一个是一个文本块,有时比用于保存它的行长。第二个是按钮。有没有办法给文本块尽可能多的空间,同时仍然留下按钮立即去的空间?

当我使用以下代码时,文本块有时会将按钮推到网格的可视区域之外。

<Grid >
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="Auto" />
        <ColumnDefinition Width="Auto" />
    </Grid.ColumnDefinitions>
    <TextBlock Grid.Column="0" Text="{Binding Description}" HorizontalAlignment="Stretch" />
    <Button Margin="4,0" Height="0" Width="16" Grid.Column="1" MinWidth="20" VerticalAlignment="Center" />
</Grid>

我已经尝试设置第一列定义Width =“*”,但是按钮总是在行的最后,当我想要它在文本旁边时。有什么建议吗?

这是在Silverlight 4中。

感谢。

修改 我希望在用户更改窗口大小时调整网格大小,因此对网格大小设置硬限制并不好。话虽这么说,我可以在TextBlock加载和窗口改变大小时手动设置后面代码中的MaxWidth。它很笨重,但它确实有效。

1 个答案:

答案 0 :(得分:0)

以下一定会有效..

<Grid x:Name="LayoutRoot" Background="White" Width="250">
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="Auto" />
        <ColumnDefinition Width="Auto" />
    </Grid.ColumnDefinitions>
    <TextBlock x:Name="textBlock" Grid.Column="0" Text="Text Box" VerticalAlignment="Top"/>
    <Button x:Name="button" Grid.Column="1" Content="Button" VerticalAlignment="Top"  Width="60"/>
</Grid>

在构造函数中将以下行添加到xaml.cs文件中。

public MainPage()
{
    InitializeComponent();
    textBlock.MaxWidth = LayoutRoot.Width - button.Width;
}

如果有任何问题,请告诉我。

谢谢..