WPF让ListView或ListBox中的WrapPanel 自动换行

在ListView或者ListBox中使用WrapPanel想让ItemTemplate中的内容像下图这样先横向平铺然后再纵向换行,默认设置是不能实现的。


图1. 横向平铺再纵向换行的效果示例
  <ListView ScrollViewer.HorizontalScrollBarVisibility="Disabled">
            <ListView.ItemsPanel>
                <ItemsPanelTemplate>
                    <WrapPanel Orientation="Horizontal"/>
                </ItemsPanelTemplate>
            </ListView.ItemsPanel>
            <ListView.ItemTemplate>
                <DataTemplate>
                    <WrapPanel Orientation="Vertical" Margin="3" Background="{Binding DisabilityIndicator}">
                        <Image Source="{Binding Image}" Height="100" Width="100"  />
                        <TextBlock Text="{Binding Code}"   ToolTip="{Binding Code}" TextAlignment="Center" Width="100" TextTrimming="CharacterEllipsis" />
                        <TextBlock Text="{Binding Name}"  ToolTip="{Binding Name}" TextAlignment="Center" Width="100" TextTrimming="CharacterEllipsis" />
                    </WrapPanel>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>

请注意最关键的在上面代码中第一行的“ScrollViewer.HorizontalScrollBarVisibility="Disabled"”关掉横向滚动条和第四行的“Orientation="Horizontal"”使面板的平铺方向为横向。

达叔傻乐(darwin.zuo@163.com)

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容