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