c# - ListBox Horizo​​ntalContentAlignment = 拉伸(stretch)无法正常工作

标签 c# wpf xaml listbox

我创建了一个“ListBox”并将“Horizo​​ntalContentAlignment”属性设置为“Strecth”。 但是,有时,滚动时,“Horizo​​ntalContentAlignment”不起作用。 我不明白问题的原因是什么。

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>

最佳答案

听起来您想要拉伸(stretch) ListBoxItems,而不是 ListBox 本身。

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

关于c# - ListBox Horizo​​ntalContentAlignment = 拉伸(stretch)无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37790558/

相关文章:

c# - 在纯 XAML 中创建 WPF 水印

c# - 更改 Xamarin Forms XAML 按钮的 isVisible 属性

c# - DevExpress.Wpf.Grid.InfiniteGridSizeException 未处理

c# - 桌面屏幕覆盖 - 新窗体闪烁问题

c# - 使用 C# 驱动程序从 SQL 表读取数据并导出到 MongoDB 的通用方法

wpf - 打开 ContextMenu 时驻留的控件的悬停效果

c# - Wpf 绑定(bind)困惑

c# - ASP.NET Core AutoMapper配置错误

c# - 进程内缓存VS。进程外缓存

c# - 如何从 WPF 表单中删除边框/控制框?