WPF:带有图标视图的ListView?

时间:2009-01-27 17:13:35

标签: c# wpf listview

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

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

我发现有些人使用列表框手动构建图标视图并更改了paneltemplate和icontemplate。我无法相信这是唯一的方法。

任何线索?

提前致谢

4 个答案:

答案 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)