developer tip

WPF ListView 항목을 가로 스크롤 막대처럼 가로로 반복하려면 어떻게해야합니까?

optionbox 2020. 11. 16. 08:09
반응형

WPF ListView 항목을 가로 스크롤 막대처럼 가로로 반복하려면 어떻게해야합니까?


데이터를 세로로 반복하는 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>

ListView의 ItemsPanel을 가로 StackPanel로 설정합니다. 이렇게 :

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

이 작업을 수행하는 더 좋은 방법은 모든 속성이 동일하지만 특히 항목이 많은 목록 상자의 경우 훨씬 더 성능이 좋은 VirtualizingStackPanel을 사용하는 것입니다.


이쪽으로가는 것이 더 쉽다는 것을 알았습니다

<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>

참고 URL : https://stackoverflow.com/questions/359217/how-do-i-make-wpf-listview-items-repeat-horizontally-like-a-horizontal-scrollba

반응형