Grid WPF上不必要的水平滚动

时间:2014-11-14 08:08:10

标签: .net wpf listbox

我在列表框中有一个网格。并且网格中的一列具有宽度*。和其他列具有静态宽度。即使空间足够大,列表视图的水平滚动条也会出现。我希望滚动条仅在需要时出现,即空间不足。

这里发生了什么我如何解决它。

<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>

1 个答案:

答案 0 :(得分:1)

不要将Grid.Width绑定到ListBox.ActualWidth,而是将HorizontalContentAlignment设置为Stretch

<ListBox.ItemContainerStyle>
    <Style TargetType="ListBoxItem">
        <Setter Property="HorizontalContentAlignment" Value="Stretch" />
    </Style>
</ListBox.ItemContainerStyle>