我正在制作一个简单的排行榜。我想要的是让团队名称列标签与它所在的网格列的大小相同。
<ListView x:Name="TeamList" Background="#00000000" BorderBrush="#00000000">
<ListView.View>
<GridView>
<GridView.ColumnHeaderContainerStyle>
<Style>
<Setter Property="FrameworkElement.Visibility" Value="Collapsed"/>
</Style>
</GridView.ColumnHeaderContainerStyle>
<GridViewColumn>
<GridViewColumn.CellTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="70"></ColumnDefinition>
<ColumnDefinition Width="10"></ColumnDefinition>
<ColumnDefinition Width="*"></ColumnDefinition>
<ColumnDefinition Width="10"></ColumnDefinition>
<!-- more columns for points -->
</Grid.ColumnDefinitions>
<Border Grid.Column="0" BorderBrush="#4Fd5f4ff" BorderThickness="1,1,1,1" CornerRadius="8,8,8,8" Background="#4Fd5f4ff">
<Label Width="50"
HorizontalAlignment="Center" HorizontalContentAlignment="Center"
VerticalAlignment="Center" VerticalContentAlignment="Center" FontSize="23" FontWeight="Bold"
Foreground="Black">#1</Label>
</Border>
<!-- This is shortened to the size of the content -->
<Border Grid.Column="2" BorderBrush="#7Fd5f4ff" BorderThickness="1,1,1,1" CornerRadius="8,8,8,8" Background="#7Fd5f4ff">
<Label Height="40" Content="{Binding Path=Name}"
FontSize="19" FontWeight="Bold" Padding="20 0 0 0"
Foreground="Black" VerticalContentAlignment="Center" VerticalAlignment="Center"></Label>
</Border>
<!-- More columns for points -->
</Grid>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
上面列出了主题名称,但边框/标签的宽度缩短为实际内容的大小。
如何让标签扩展到网格列的大小*?
答案 0 :(得分:1)
问题在于,Grid
只根据其内容的大小在GridView
中调整大小。如果您为ShowGridLines="True"
打开Grid
,则可以立即看到此问题。
要避免此问题,您必须为Grid
提供宽度。
我使用Snoop在VisualTree周围查找了GridView
,看到没有任何元素可以实际延伸以填充GridView中任何列的最大空间量,因此它不会似乎您可以使用RelativeSource
绑定执行此操作。
如果您的GridView
中只有一个列,则可能通过使用GridViewRowPresenter
绑定绑定RelativeSource
的宽度并使用{{1从值中删除X空格以考虑Converter
Margins
但如果可用,静态宽度可能更容易。
当然,如果这是您<Grid Width="{Binding Path=ActualWidth, Converter={StaticResource MyConverter}",
RelativeSource={RelativeSource AncestorType={x:Type GridViewRowPresenter}}"
... />
中唯一的列,那么只需使用多个GridView
而不是在单个{{1}内构建您自己的GridViewColumns
,您就会好得多。和} HB said一样。