如何让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>
答案 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中的最后一项将调整大小以适应剩余空间,这正是我所需要的。