2009-01-27 23 views
8

No puedo entender cómo puedo implementar una Vista de icono en el ListView de WPF (una vista similar al Explorador de Windows). Buscando en google Solo encontré información sobre la implementación de GridView pero no pistas sobre la Vista de iconos. No estoy hablando de System.Windows.Form.ListView, sino de System.Windows.Controls.ListView.WPF: ListView con vista de iconos?

Quizás haya otro control para hacer eso? No encontré nada relevante sobre esto?

Solo he encontrado algunas personas que crean la vista del icono a mano usando el cuadro de lista y cambiando la plantilla del panel y la plantilla del icono. No puedo creer que esta sea la única forma de hacerlo.

¿Alguna pista?

Gracias de antemano

Respuesta

8

Igual que la respuesta de Tanveer Badar, pero con un WrapPanel en lugar de un UniformGrid. Establezca lo siguiente en su listbox:

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

forzar el WrapPanel para ajustar.

6

Justo al lado de la parte superior de mi cabeza, ¿Has probado esto?

<Style TargetType="ListBox"> 
    <Setter Property="ItemsPanel"> 
    <Setter.Value> 
     <ItemsPanelTemplate> 
     <UniformGrid/> 
     </ItemsPanelTemplate> 
    </Setter.Value> 
    </Setter> 
</Style> 
10

EDIT Aparece he entendido lo que quería decir con la vista del explorador ... yo la mía establece en detalles ...;) Voy a dejar mi respuesta aquí por si alguien hace el mismo error que yo ...


no hay tal cosa como un icono Vista en WPF, que tendrá que aplicar por sí mismo, pero usted no tiene que hacer todo desde cero.

Puede usar ListView en combinación con un GridView y al menos una CellTemplate para la columna que contiene el ícono.

El esquema general sería algo como esto para un Explorador de Windows como Vista:

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