在堆栈面板中创建TextBlock FIT,以便我可以进行省略

时间:2012-07-02 18:51:38

标签: wpf xaml

如何让TextBlock调整大小以仅容纳StackPanel中的可用空间? StackPanel仅限于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>

2 个答案:

答案 0 :(得分: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>

我更改了'main'网格,因为它看起来很奇怪只有一行和一列(从index = 0开始)并将StackPanel设置为Grid.Row="1"Grid.Column="1"

答案 1 :(得分:1)

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