我正在努力使用下面的代码来使 ColumnDefinition (336px) 当前的硬编码宽度动态化,以便它填充父级/容器中的所有剩余区域。
<Page
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Grid Height="480" Width="800">
<ListBox Name="LatestScoresListBox" Margin="9" Background="Black">
<ListBox.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="64"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Margin="4" Width="56" Height="56" Text="{Binding Text1}" TextAlignment="Center" TextWrapping="Wrap"/>
<Grid Grid.Column="1">
<Grid.RowDefinitions>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="0.5*"/>
</Grid.RowDefinitions>
<Grid Grid.Row="0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="336"/>
<ColumnDefinition Width="48"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Margin="4" Text="{Binding Text2}"/>
<TextBlock Grid.Column="1" Margin="4" Text="{Binding Text3}" TextAlignment="Center"/>
</Grid>
<Grid Grid.Row="1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="336"/>
<ColumnDefinition Width="48"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Margin="4" Text="{Binding Text4}"/>
<TextBlock Grid.Column="1" Margin="4" Text="{Binding Text5}" TextAlignment="Center"/>
</Grid>
</Grid>
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</Grid>
</Page>
我尝试不定义宽度,将宽度定义为 1*,在 TextBlock 中定义宽度,也许还有其他东西,但没有任何运气。
从代码中可以看出,父网格的面积是800px减去第一列的64px后的剩余部分。
谁能给我一个线索吗? :|
谢谢
最佳答案
尝试在 ListBox
上设置 HorizontalContentAlignment="Stretch"
属性。
默认情况下,ListBox
使用左对齐
对齐其所有项目。您必须将其设置为 Stretch
以使 ListBox
允许其项目占据所有可用空间。
关于xaml - 使文本 block 扩展以填充剩余区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4572291/