我无法弄清楚如何在WPF ListView中实现图标视图(类似于Windows资源管理器的视图)。在谷歌搜索我只发现了有关实现GridView的信息,但没有关于图标视图的线索。我不是在谈论System.Windows.Form.ListView
,而是System.Windows.Controls.ListView
。
也许有另一种控制可以做到这一点?我没有发现任何与此相关的内容?
我发现有些人使用列表框手动构建图标视图并更改了paneltemplate和icontemplate。我无法相信这是唯一的方法。
任何线索?
提前致谢
答案 0 :(得分:10)
编辑似乎我误解了你对资源管理器视图的意思...我已将我的设置设置为详细信息...;)我会在此处留下我的答案以防万一有人犯同样的错误我...
在WPF中没有图标视图这样的东西,你必须自己实现它,但你不必从头开始做任何事情。
您可以将ListView与GridView结合使用,并将至少一个CellTemplate用于包含该图标的列。
对于Windows资源管理器来说,总体大纲看起来像这样:
<ListView>
<ListView.Resources>
<DataTemplate x:Key="IconTemplate">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Image Grid.Column="0"/>
<TextBlock Grid.Column="1" Text="{Binding Name}"/>
</Grid>
</DataTemplate>
</ListView.Resources>
<ListView.View>
<GridView>
<GridViewColumn CellTemplate="{StaticResource IconTemplate}" Header="Name"/>
<GridViewColumn DisplayMemberBinding="{Binding Size}" Header="Size"/>
<GridViewColumn DisplayMemberBinding="{Binding Type}" Header="Type"/>
</GridView>
</ListView.View>
</ListView>
答案 1 :(得分:8)
与Tanveer Badar的答案相同,但使用WrapPanel而不是UniformGrid。在列表框中设置以下内容:
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
ScrollViewer.VerticalScrollBarVisibility="Auto"
强制WrapPanel包装。
答案 2 :(得分:7)
刚刚出头,你试过这个吗?
<Style TargetType="ListBox">
<Setter Property="ItemsPanel">
<Setter.Value>
<ItemsPanelTemplate>
<UniformGrid/>
</ItemsPanelTemplate>
</Setter.Value>
</Setter>
</Style>
答案 3 :(得分:4)