【问题标题】:How do I make WPF ListView items repeat horizontally, like a horizontal scrollbar?如何使 WPF ListView 项目水平重复,如水平滚动条?
【发布时间】:2010-09-26 10:20:15
【问题描述】:

我有一个垂直重复数据的 WPF ListView。我不知道如何让它水平重复,就像 Windows 资源管理器中的幻灯片视图一样。我当前的 ListView 定义是:

<ListView ItemsSource="{StaticResource MyDataList}" ItemTemplate="{StaticResource ListViewTemplate}">
</ListView>

DataTemplate 是(尽管我认为这无关紧要);

                <Rectangle HorizontalAlignment="Stretch" Margin="0,1,0,0" x:Name="rectReflection" Width="Auto" Grid.Row="1" Height="30">
                    <Rectangle.Fill>
                        <VisualBrush Stretch="None" AlignmentX="Center" AlignmentY="Top" Visual="{Binding ElementName=imgPhoto}">
                            <VisualBrush.RelativeTransform>
                                <TransformGroup>
                                    <MatrixTransform Matrix="1,0,0,-1,0,0" />
                                    <TranslateTransform Y="1" />
                                </TransformGroup>
                            </VisualBrush.RelativeTransform>
                        </VisualBrush>
                    </Rectangle.Fill>
                    <Rectangle.OpacityMask>
                        <RadialGradientBrush GradientOrigin="0.5,1.041">
                            <RadialGradientBrush.RelativeTransform>
                                <TransformGroup>
                                    <ScaleTransform CenterX="0.5" CenterY="0.5" ScaleX="1.202" ScaleY="2.865"/>
                                    <SkewTransform AngleX="0" AngleY="0" CenterX="0.5" CenterY="0.5"/>
                                    <RotateTransform Angle="0" CenterX="0.5" CenterY="0.5"/>
                                    <TranslateTransform X="-0.002" Y="-0.491"/>
                                </TransformGroup>
                            </RadialGradientBrush.RelativeTransform>
                            <GradientStop Color="#D9000000" Offset="0"/>
                            <GradientStop Color="#01FFFFFF" Offset="0.8"/>
                        </RadialGradientBrush>
                    </Rectangle.OpacityMask>
                </Rectangle>
            </Grid>
        </Border>
    </DataTemplate>

【问题讨论】:

    标签: wpf xaml listview alignment


    【解决方案1】:

    将 ListView 的 ItemsPanel 设置为水平 StackPanel。像这样:

    <ListView.ItemsPanel>
        <ItemsPanelTemplate>
            <StackPanel Orientation="Horizontal"></StackPanel>
        </ItemsPanelTemplate>
    </ListView.ItemsPanel>
    

    【讨论】:

      【解决方案2】:

      也许更好的方法是使用 VirtualizingStackPanel,它具有所有相同的属性,但性能更高,尤其是对于包含大量项目的列表框。

      【讨论】:

        【解决方案3】:

        我发现这条路更容易走

        <ItemsControl ItemsSource="{Binding Path=Steps}">
        <ItemsControl.ItemTemplate>
            <DataTemplate>
                <TextBlock Text="{Binding PageName}" Padding="10" />
            </DataTemplate>
        </ItemsControl.ItemTemplate>    
        <ItemsControl.ItemsPanel>
            <ItemsPanelTemplate>
                <WrapPanel></WrapPanel>
            </ItemsPanelTemplate>
        </ItemsControl.ItemsPanel>
        

        【讨论】:

        • 但是 WrapPanel 有时会换行?
        • 直到它到达右边界并再次从左到右作为新行
        猜你喜欢
        • 2023-03-05
        • 1970-01-01
        • 2011-08-12
        • 1970-01-01
        • 1970-01-01
        • 2018-06-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多