我有一个带有四列的ListBox,放在我的网格的第二行,它还包含4列。我使用Main网格的ColumnDefinitions在ListBox上面放置了四个标题,我需要放置在主网格的第1行中的ListBox,以使ColumnWidths根据我创建的标题进行匹配。
<Grid Margin="12,0,12,6">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="40"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<TextBlock Text="One" Grid.Row="0" Grid.Column="0"/>
<TextBlock Text="Two" Grid.Row="0" Grid.Column="1"/>
<TextBlock Text="Three" Grid.Row="0" Grid.Column="2"/>
<TextBlock Text="Four" Grid.Row="0" Grid.Column="3"/>
<ListBox x:Name="HistoryListBox" Grid.Row="1" Grid.ColumnSpan="4">
<ListBox.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width*"/>
<ColumnDefinition Width*"/>
<ColumnDefinition Width*"/>
<ColumnDefinition Width*"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="{Binding One}"/>
<TextBlock Grid.Column="1" Text="{Binding Two}"/>
<TextBlock Grid.Column="2" Text="{Binding Three}"/>
<TextBlock Grid.Column="3" Text="{Binding Four}"/>
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</Grid>
我在ListBox中看到的只是混乱的数据,没有分成正确的列宽以匹配上面的TextBox。我该如何解决这个问题?
答案 0 :(得分:1)
也许这就够了
<ListBox x:Name="HistoryListBox" Grid.Row="1" Grid.ColumnSpan="4">
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
</Style>
</ListBox.ItemContainerStyle>
<ListBox.ItemTemplate>
<DataTemplate>
<Grid HorizontalAlignment="Stretch">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="{Binding One}"/>
<TextBlock Grid.Column="1" Text="{Binding Two}"/>
<TextBlock Grid.Column="2" Text="{Binding Three}"/>
<TextBlock Grid.Column="3" Text="{Binding Four}"/>
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
答案 1 :(得分:0)
当您使用ListBox.ItemTemplate时,表示您为listBox的每个项目都有一个网格。
如果在每列上使用*,则会获得等于列的可用空间,但每个元素仍然有不同的网格。
如果您坚持使用Listbox.ItemTemplate方法,我建议使用Grid而不是ListBox或使用SharedSizeGroup属性,您将能够为每列提供不同的大小,并仍然保持网格的“错觉”。