2014-11-14 41 views
0

我在列表框中有一個網格。而網格的其中一列有寬度*。而其他列具有靜態寬度。即使空間足夠多,列表視圖的水平滾動條也會始終顯示。我希望滾動條僅在需要時才顯示,即空間不夠。網格上不必要的水平滾動WPF

這是怎麼回事,我該如何解決它。

<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

而是結合Grid.WidthListBox.ActualWidth,設置HorizontalContentAlignmentStretch

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