2009-01-27 3 views
8

Ich kann nicht herausfinden, wie ich eine Icon-Ansicht in der WPF-ListView (eine Ansicht ähnlich dem Windows Explorer) implementieren kann. Bei der Suche nach Google habe ich nur Informationen zur Implementierung der GridView gefunden, aber keine Hinweise zur Icon-Ansicht. Ich spreche nicht über System.Windows.Form.ListView aber System.Windows.Controls.ListView.WPF: ListView mit Symbolansicht?

Vielleicht gibt es eine andere Kontrolle, das zu tun? Ich habe diesbezüglich nichts Relevantes gefunden?

Ich habe nur einige Leute gefunden, die die Icon-Ansicht von Hand erstellen, indem sie die Listbox verwenden und die Pannentemplate und die Icon-Vorlage ändern. Ich kann nicht glauben, dass dies der einzige Weg ist, es zu tun.

Irgendwelche Hinweise?

Vielen Dank im Voraus

Antwort

8

Gleiche wie Tanveer Badar Antwort, aber mit einem WrapPanel anstelle eines Uniform. Legen Sie Folgendes in Ihrer Listbox fest:

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

, um das WrapPanel zum Umbruch zu zwingen.

6

Direkt an der Spitze von meinem Kopf, haben Sie versucht das?

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

EDIT I die falsch verstanden, was Sie mit Explorer-Ansicht gemeint ... Ich habe ich auf Einzelheiten festgelegt ...;) Ich werde meine Antwort überlasse hier falls jemand macht die gleichen Fehler wie ich

...

es gibt nicht so etwas wie eine Symbolansicht in WPF, werden Sie es selbst implementieren müssen, aber Sie nicht alles von Grund auf zu tun haben.

Sie können den ListView in Kombination mit einem GridView und mindestens einem CellTemplate für die Spalte verwenden, die das Symbol enthält.

Der allgemeine Umriss wäre so etwas wie dies für eine Windows-Explorer wie Ansicht aussehen:

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