2016-06-13 74 views
2

我创建了一个“ListBox”并将“Horizo​​ntalContentAlignment”属性设置为“Strecth”。 但是,有时滚动时,“Horizo​​ntalContentAlignment”无法正常工作。 我不明白问题的原因。ListBox Horizo​​ntalContentAlignment = Stretch不能正常工作

Image still demonstrate the problem

我的代码:

<ListBox 
     Name="ListBoxTracks" 
     Grid.Row="0" 
     HorizontalContentAlignment="Stretch" 
     ItemsSource="{Binding MusicManager.TracksCollection, IsAsync=True}" 
     ScrollViewer.CanContentScroll="True" 
     ScrollViewer.IsDeferredScrollingEnabled="True" 
     SelectedItem="{Binding MusicManager.CurrentTrack, Mode=OneWayToSource}" 
     VirtualizingPanel.CacheLength="1,1" 
     VirtualizingPanel.IsVirtualizingWhenGrouping="True" 
     VirtualizingStackPanel.IsVirtualizing="True" 
     VirtualizingStackPanel.VirtualizationMode="Recycling"> 
     <i:Interaction.Triggers> 
      <i:EventTrigger EventName="SelectionChanged"> 
       <i:InvokeCommandAction Command="{Binding MusicManager.GetTracksCollectionCommand}" CommandParameter="{Binding Path=ItemsSource, RelativeSource={RelativeSource AncestorType={x:Type ListBox}}}" /> 
      </i:EventTrigger> 
      <i:EventTrigger EventName="PreviewMouseDoubleClick"> 
       <i:InvokeCommandAction Command="{Binding MusicManager.InitPlayCommand}" /> 
      </i:EventTrigger> 
     </i:Interaction.Triggers> 
     <ListBox.ItemsPanel> 
      <ItemsPanelTemplate> 
       <VirtualizingStackPanel Orientation="Vertical" /> 
      </ItemsPanelTemplate> 
     </ListBox.ItemsPanel> 


     <ListBox.ItemTemplate> 
      <DataTemplate DataType="{x:Type playable:LocalPlayable}"> 
       <Grid> 
        <Grid.ColumnDefinitions> 
         <ColumnDefinition Width="auto" /> 
         <ColumnDefinition Width="*" /> 
         <ColumnDefinition Width="*" /> 
         <ColumnDefinition Width="*" /> 
        </Grid.ColumnDefinitions> 
        <Grid.RowDefinitions> 
         <RowDefinition Height="auto" /> 
         <RowDefinition Height="auto" /> 
        </Grid.RowDefinitions> 

        <fa:ImageAwesome 
         Grid.Row="0" 
         Grid.RowSpan="2" 
         Grid.Column="0" 
         Width="16" 
         Height="16" 
         Margin="5" 
         HorizontalAlignment="Center" 
         VerticalAlignment="Center" 
         Foreground="{DynamicResource PrimaryHueMidForegroundBrush}" 
         Icon="Music" /> 

        <TextBlock 
         Grid.Row="0" 
         Grid.Column="1" 
         Grid.ColumnSpan="2" 
         Margin="5,5,5,0" 
         HorizontalAlignment="Left" 
         FontSize="12" 
         TextTrimming="WordEllipsis"> 
         <TextBlock.Text> 
          <MultiBinding StringFormat="{}{0} - {1}"> 
           <Binding Path="Artist[0].Name" /> 
           <Binding Path="Title" /> 
          </MultiBinding> 
         </TextBlock.Text> 
        </TextBlock> 

        <TextBlock 
         Grid.Row="0" 
         Grid.Column="3" 
         Margin="5,5,5,0" 
         HorizontalAlignment="Right" 
         FontSize="12"> 
         <TextBlock.Text> 
          <MultiBinding StringFormat="{}{0:00}:{1:00}"> 
           <Binding Path="Duration.Minutes" /> 
           <Binding Path="Duration.Seconds" /> 
          </MultiBinding> 
         </TextBlock.Text> 
        </TextBlock> 

        <TextBlock 
         Grid.Row="1" 
         Grid.Column="1" 
         Grid.ColumnSpan="2" 
         Margin="5,0,5,0" 
         HorizontalAlignment="Left" 
         FontSize="12" 
         Text="{Binding Converter={StaticResource TrackAttributesConverter}}" /> 
        <materialDesign:RatingBar 
         Grid.Row="1" 
         Grid.Column="3" 
         Margin="5,0,5,0" 
         HorizontalAlignment="Right" 
         Max="5" /> 
       </Grid> 
      </DataTemplate> 
     </ListBox.ItemTemplate> 

     <ListBox.GroupStyle> 
      <GroupStyle> 
       <GroupStyle.HeaderTemplate> 
        <DataTemplate> 
         <Grid> 
          <TextBlock 
           Margin="15,5,15,5" 
           HorizontalAlignment="Left" 
           Foreground="{DynamicResource MaterialDesignBody}" 
           FontSize="16" 
           Text="{Binding Path=Name}" /> 
          <TextBlock 
           Margin="15,5,15,5" 
           HorizontalAlignment="Right" 
           Foreground="{DynamicResource MaterialDesignBody}" 
           FontSize="16" 
           Text="{Binding Path=ItemCount, StringFormat=Songs:{0:F0}}" /> 
         </Grid> 
        </DataTemplate> 
       </GroupStyle.HeaderTemplate> 
      </GroupStyle> 
      <GroupStyle> 
       <GroupStyle.ContainerStyle> 
        <Style TargetType="{x:Type GroupItem}"> 
         <Setter Property="Template"> 
          <Setter.Value> 
           <ControlTemplate TargetType="{x:Type GroupItem}"> 
            <Grid> 
             <Grid.RowDefinitions> 
              <RowDefinition Height="auto" /> 
              <RowDefinition Height="*" /> 
             </Grid.RowDefinitions> 

             <Rectangle 
              Grid.Row="0" 
              Height="1" 
              HorizontalAlignment="Stretch" 
              Stroke="{DynamicResource MaterialDesignBody}" /> 


             <Grid Grid.Row="1"> 
              <Grid.ColumnDefinitions> 
               <ColumnDefinition Width="auto" /> 
               <ColumnDefinition Width="1" /> 
               <ColumnDefinition Width="*" /> 
              </Grid.ColumnDefinitions> 
              <Grid Grid.Column="0" Width="120"> 
               <Grid.RowDefinitions> 
                <RowDefinition Height="auto" /> 
                <RowDefinition Height="auto" /> 
                <RowDefinition Height="auto" /> 
                <RowDefinition Height="auto" /> 
               </Grid.RowDefinitions> 

               <myControls:ImageProviderViewer 
                Grid.Row="0" 
                Width="120" 
                Height="120" 
                VerticalAlignment="Top" 
                HidePlaceholderAtBeginning="True" 
                HighPriorityImage="True" 
                ImageProvider="{Binding Items[0].Album.Cover}"> 

                <myControls:ImageProviderViewer.Placeholder> 
                 <Viewbox Width="110" Height="110"> 
                  <Path Fill="Gray" Data="{StaticResource VectorMicrophone}" /> 
                 </Viewbox> 
                </myControls:ImageProviderViewer.Placeholder> 
               </myControls:ImageProviderViewer> 

               <TextBlock 
                Grid.Row="1" 
                Margin="2" 
                FontSize="12" 
                FontWeight="Medium" 
                Text="{Binding Items[0].Artist[0].Name}" 
                TextTrimming="WordEllipsis" /> 
               <TextBlock 
                Grid.Row="2" 
                Margin="2" 
                FontSize="12" 
                FontWeight="Medium" 
                Text="{Binding Items[0].Album.Name}" 
                TextTrimming="WordEllipsis" /> 
               <TextBlock 
                Grid.Row="3" 
                Margin="2" 
                FontSize="12" 
                FontWeight="Medium" 
                Text="{Binding Items[0].Album.FirstReleaseDate}" 
                TextTrimming="WordEllipsis" /> 
              </Grid> 
              <Rectangle 
               Grid.Column="1" 
               Width="1" 
               VerticalAlignment="Stretch" 
               Stroke="{DynamicResource MaterialDesignBody}" /> 

              <ItemsPresenter Grid.Column="2" /> 
             </Grid> 
            </Grid> 
           </ControlTemplate> 
          </Setter.Value> 
         </Setter> 
        </Style> 
       </GroupStyle.ContainerStyle> 
      </GroupStyle> 
     </ListBox.GroupStyle> 
    </ListBox> 

回答

1

听起来像是你要舒展ListBoxItems,而不是列表框本身。

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