2016-12-06 99 views
1

我使用了一個ScrollViewer和ItemsControl。 Scrollviewer的VerticalScrollBarVisibility設置爲「Auto」。 問題是,當滾動條出現時,它將ItemsControl的內容水平移動。垂直滾動條橫向移動內容

有沒有一種方法可以讓滾動條「超過」內容而不移動它們?

的代碼看起來是這樣的

<ScrollViewer VerticalScrollBarVisibility="Auto" CanContentScroll="True" SnapsToDevicePixels="True"> 
    <ItemsControl ItemsSource="{Binding Summaries}" > 
    <ItemsControl.ItemsPanel> 
     <ItemsPanelTemplate> 
      <StackPanel Orientation="Vertical" IsItemsHost="True" CanVerticallyScroll="True" /> 
     </ItemsPanelTemplate> 
    </ItemsControl.ItemsPanel> 
    <ItemsControl.ItemTemplate> 
     <DataTemplate> 
      <Grid Margin="15,5,10,5" HorizontalAlignment="Stretch"> 
       <Grid.ColumnDefinitions> 
        <ColumnDefinition Width=".166*"></ColumnDefinition> 
        <ColumnDefinition Width=".166*"></ColumnDefinition> 
        <ColumnDefinition Width=".166*"></ColumnDefinition> 
        <ColumnDefinition Width=".166*"></ColumnDefinition> 
        <ColumnDefinition Width=".166*"></ColumnDefinition> 
        <ColumnDefinition Width=".166*"></ColumnDefinition> 
       </Grid.ColumnDefinitions> 
       <Label Grid.Column="0" Content="{Binding Name}" VerticalAlignment="Center" HorizontalAlignment="Left"/> 
       <Label Grid.Column="1" Content="{Binding A}" HorizontalContentAlignment="Center"/> 
       <Label Grid.Column="2" Content="{Binding B}" HorizontalAlignment="Center" HorizontalContentAlignment="Stretch"/> 
       <Label Grid.Column="3" Content="{Binding C}" HorizontalAlignment="Center" HorizontalContentAlignment="Stretch"/> 
       <Label Grid.Column="4" Content="{Binding D}" HorizontalAlignment="Center" HorizontalContentAlignment="Stretch"/> 
       <Label Grid.Column="5" Content="{Binding E}" HorizontalAlignment="Center" HorizontalContentAlignment="Stretch"/> 
      </Grid> 
     </DataTemplate>            
    </ItemsControl.ItemTemplate> 
</ItemsControl></ScrollViewer> 

感謝

回答

1

這裏是我在我的項目最近使用過的一招:

ItemsControl.WidthScrollViewer.ActualWidth通過單向獲取的綁定:

<ScrollViewer VerticalScrollBarVisibility="Auto" CanContentScroll="True" 
       Name="scroller" 
       SnapsToDevicePixels="True"> 
    <ItemsControl ItemsSource="{Binding Summaries}" 
        Width="{Binding Path=ActualWidth, ElementName=scroller, Mode=OneWay}"> 
     <ItemsControl.ItemsPanel> 
      <ItemsPanelTemplate> 
       <StackPanel Orientation="Vertical" IsItemsHost="True" CanVerticallyScroll="True" /> 
      </ItemsPanelTemplate> 
     </ItemsControl.ItemsPanel> 
     <ItemsControl.ItemTemplate> 
      <DataTemplate> 
       <UniformGrid Columns="6" Margin="15,5,10,5" HorizontalAlignment="Stretch"> 
        <Label Content="{Binding Name}" VerticalAlignment="Center" HorizontalAlignment="Left"/> 
        <Label Content="{Binding A}" HorizontalContentAlignment="Center"/> 
        <Label Content="{Binding B}" HorizontalAlignment="Center" HorizontalContentAlignment="Stretch"/> 
        <Label Content="{Binding C}" HorizontalAlignment="Center" HorizontalContentAlignment="Stretch"/> 
        <Label Content="{Binding D}" HorizontalAlignment="Center" HorizontalContentAlignment="Stretch"/> 
        <Label Content="{Binding E}" HorizontalAlignment="Center" HorizontalContentAlignment="Stretch"/> 
       </UniformGrid> 
      </DataTemplate> 
     </ItemsControl.ItemTemplate> 
    </ItemsControl> 
</ScrollViewer> 

也考慮使用UniformGrid