【问题标题】:How do I prevent a column in Silverlight xaml Grid from taking up the entire row?如何防止 Silverlight xaml Grid 中的列占用整行?
【发布时间】:2012-02-14 18:22:02
【问题描述】:

我想在我的网格中显示两列。第一个是一个文本块,有时比用来容纳它的行长。第二个是按钮。有没有办法给文本块尽可能多的空间,同时仍然为按钮留出空间?

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

<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。它很笨重,但很有效。

【问题讨论】:

    标签: xaml silverlight-4.0


    【解决方案1】:

    以下肯定会奏效..

    <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;
    }
    

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

    谢谢..

    【讨论】:

    • 当我希望它能够随着用户更改窗口大小而扩展或收缩时,这会将宽度限制为 250 像素。对不起,我忘了在帖子里提到这一点。而且我确实找到了一种方法,但它有点笨拙。
    猜你喜欢
    • 2010-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-20
    • 1970-01-01
    • 1970-01-01
    • 2023-01-11
    • 1970-01-01
    相关资源
    最近更新 更多