我在列表框中有一个网格。并且网格中的一列具有宽度*。和其他列具有静态宽度。即使空间足够大,列表视图的水平滚动条也会出现。我希望滚动条仅在需要时出现,即空间不足。
这里发生了什么我如何解决它。
<ListBox Grid.Column="0" Grid.Row="0" ItemsSource="{Binding MyCollection}"
Margin="0"
Background="Transparent"
BorderThickness="0"
Padding="0"
ScrollViewer.HorizontalScrollBarVisibility="Auto"
ScrollViewer.VerticalScrollBarVisibility="Auto"
AutomationProperties.Name="MyListBox"
AutomationProperties.AutomationId="MyListBox"
Name="MyListBox" Grid.IsSharedSizeScope="True">
<ListBox.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.Width>
<Binding ElementName="MyListBox" Path="ActualWidth"/>
</Grid.Width>
<Grid.ColumnDefinitions>
<ColumnDefinition SharedSizeGroup="ShCol" width="25"/>
<ColumnDefinition width ="30">
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="20"/>
</Grid.RowDefinitions>
</Grid>
</DataTemplate>
答案 0 :(得分:1)
不要将Grid.Width
绑定到ListBox.ActualWidth
,而是将HorizontalContentAlignment
设置为Stretch
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
</Style>
</ListBox.ItemContainerStyle>