2009-01-27 61 views
8

我找不出如何在WPF ListView中实现图标视图(类似于Windows资源管理器的视图)。在google上搜索我只找到关于实现GridView的信息,但没有关于Icon View的线索。我不是在谈论System.Windows.Form.ListView,而是System.Windows.Controls.ListViewWPF:带图标视图的ListView?

也许有另一种控制来做到这一点?我没有发现与此相关的任何事情?

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

任何线索?

在此先感谢

回答

8

同Tanveer巴达尔的答案,但有一个WrapPanel而不是UniformGrid。在列表框中设置以下内容:

ScrollViewer.HorizontalScrollBarVisibility="Disabled" 
ScrollViewer.VerticalScrollBarVisibility="Auto"  

强制WrapPanel包装。

6

刚刚离开我的头顶,你试过这个吗?

<Style TargetType="ListBox"> 
    <Setter Property="ItemsPanel"> 
    <Setter.Value> 
     <ItemsPanelTemplate> 
     <UniformGrid/> 
     </ItemsPanelTemplate> 
    </Setter.Value> 
    </Setter> 
</Style> 
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>