0

如何TextBlock调整大小以仅容纳可用空间StackPanelStackPanel限于我的Grid布局。我只是说明了问题,但在我的实际项目中它有点复杂,所以理想的解决方案应该很简单:)

<Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto" />
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="200" />
        </Grid.ColumnDefinitions>

        <StackPanel Grid.Column="1" Grid.Row="1" 
            Orientation="Horizontal">
            <Button Content="Test" />
            <TextBlock Text="Test test" />
            <Button Content="Test 2" />
            <TextBlock Width="Auto">
                Some text that I want to trim with ellipse
            </TextBlock>
        </StackPanel>
    </Grid>
4

2 回答 2

2

你最好做StackPanel另一个Grid

<Grid> 
    <Grid.RowDefinitions> 
        <RowDefinition Height="1*" />
        <RowDefinition Height="Auto" /> 
    </Grid.RowDefinitions> 
    <Grid.ColumnDefinitions> 
        <ColumnDefinition Width="1*" />
        <ColumnDefinition Width="200" />
    </Grid.ColumnDefinitions> 

    <Grid Grid.Column="1" Grid.Row="1">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="Auto"/>
            <ColumnDefinition Width="Auto"/>
            <ColumnDefinition Width="Auto"/>
            <ColumnDefinition Width="1*"/>
        </Grid.ColumnDefinitions>
        <Button    Grid.Column="0" Content="Test" /> 
        <TextBlock Grid.Column="1" Text="Test test" /> 
        <Button    Grid.Column="2" Content="Test 2" /> 
        <TextBlock Grid.Column="3" Text="Some text that I want to trim with ellipse"/>
    </Grid>
</Grid>

我更改了您的“主”网格,因为它看起来很奇怪,只有一行和一列(从 index=0 开始)并将StackPaneltoGrid.Row="1"Grid.Column="1"

于 2012-07-02T23:24:05.173 回答
1

正确的答案是使用DockPanel而不是StackPanel. DockPanel 中的最后一项将调整大小以适应剩余空间,这正是我所需要的。

于 2012-07-04T00:39:35.330 回答