WPF - 创建一个可以将其内容包装到特定形状的 ListView

问题描述 投票:0回答:1

是否可以创建一个可以将其内容包装为特定形状而不是矩形的listView?因此,当其内容触及边框时,它可以转到下一行

我尝试的是使用 Path 创建一个形状,并在形状的顶部创建一个 listView,并使用 Wrap 面板将 listView 内容包裹起来,但包裹面板无法包裹到形状。也许可以做一个自定义的包裹面板并解析其内部的几何形状并执行一些条件?但我不知道该怎么做...有人有想法实现这一目标吗?非常感谢

What I expected effect is

What I did

我的 XAML

                <Viewbox x:Name="LeftCVbx"
                         Grid.Column="0" Grid.Row="0"
                         HorizontalAlignment="Center" VerticalAlignment="Center"
                         Margin="20"
                         >
                    <Path x:Name="LeftCPath"
                          Stroke="Black" StrokeThickness="2" Fill="White"
                          Data="M 0 0 l 800 0 l 0 120 a 290 290 0 0 0 -250 250 l -550 0 z">
                          
                    </Path>
                </Viewbox>

                <ListView ItemsSource="{Binding ExampleList}"
                          Width="{Binding ElementName=LeftCVbx, Path=ActualWidth}" 
                          Height="{Binding ElementName=LeftCVbx, Path=ActualHeight}" 
                          ScrollViewer.CanContentScroll="False" ScrollViewer.HorizontalScrollBarVisibility="Disabled"
                          BorderBrush="Red" BorderThickness="2"
                          FontSize="22"
                          Background="Transparent">


                    <ListView.ItemsPanel>

                        <ItemsPanelTemplate>

                            <WrapPanel/>

                        </ItemsPanelTemplate>
                        
                    </ListView.ItemsPanel>
                    
                </ListView>
c# wpf xaml listview wrappanel
1个回答
0
投票

我有同样的问题......正在尝试实现同样的目标。

© www.soinside.com 2019 - 2024. All rights reserved.