WPF:带有图标视图的ListView?

use*_*528 9 c# wpf listview

我无法弄清楚如何在WPF ListView(类似于Windows资源管理器的视图)中实现图标视图.在谷歌上搜索我只发现了有关实现GridView的信息,但没有关于图标视图的线索.我不是在谈论System.Windows.Form.ListView但是System.Windows.Controls.ListView.

或许有另一种控制可以做到这一点?我没有找到任何与此相关的内容?

我只找到一些人使用列表框手动构建图标视图并更改paneltemplate和icontemplate.我无法相信这是唯一的方法.

有线索吗?

提前致谢

Bub*_*rap 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>
Run Code Online (Sandbox Code Playgroud)


geo*_*tnz 8

与Tanveer Badar的答案相同,但使用WrapPanel而不是UniformGrid.在列表框中设置以下内容:

ScrollViewer.HorizontalScrollBarVisibility="Disabled" 
ScrollViewer.VerticalScrollBarVisibility="Auto"       
Run Code Online (Sandbox Code Playgroud)

强制WrapPanel包裹.


Tan*_*dar 7

就在我的头顶,你试过这个吗?

<Style TargetType="ListBox">
  <Setter Property="ItemsPanel">
    <Setter.Value>
      <ItemsPanelTemplate>
        <UniformGrid/>
      </ItemsPanelTemplate>
    </Setter.Value>
  </Setter>
</Style>
Run Code Online (Sandbox Code Playgroud)