2011-01-16 11 views

risposta

160

A ListView è fondamentalmente come un ListBox (e ne eredita), ma ha anche una proprietà View. Questa proprietà consente di specificare un modo predefinito di visualizzazione degli articoli. L'unica visualizzazione predefinita nel BCL è GridView, ma è possibile facilmente create your own.

Un'altra differenza è la modalità di selezione predefinita: è Single per un ListBox, ma Extended per un ListView

+14

Cosa intendi per BCL? Grazie. –

+34

@DanieleArmanasco, BCL = [Base Class Library] (http://en.wikipedia.org/wiki/Base_Class_Library) –

9

Un ListView consentono di definire un insieme di views per esso e ti dà un modo nativo (WPFbinding supporto) per controllare il display di ListView utilizzando il numero definito views.

Esempio:

XAML

<ListView ItemsSource="{Binding list}" Name="listv" MouseEnter="listv_MouseEnter" MouseLeave="listv_MouseLeave"> 
     <ListView.Resources> 
      <GridView x:Key="one"> 
       <GridViewColumn Header="ID" > 
        <GridViewColumn.CellTemplate> 
         <DataTemplate> 
          <TextBlock Text="{Binding id}" /> 
         </DataTemplate> 
        </GridViewColumn.CellTemplate> 
       </GridViewColumn> 
       <GridViewColumn Header="Name" > 
        <GridViewColumn.CellTemplate> 
         <DataTemplate> 
          <TextBlock Text="{Binding name}" /> 
         </DataTemplate> 
        </GridViewColumn.CellTemplate> 
       </GridViewColumn> 
      </GridView> 
      <GridView x:Key="two">      
       <GridViewColumn Header="Name" > 
        <GridViewColumn.CellTemplate> 
         <DataTemplate> 
          <TextBlock Text="{Binding name}" /> 
         </DataTemplate> 
        </GridViewColumn.CellTemplate> 
       </GridViewColumn> 
      </GridView> 
     </ListView.Resources> 
     <ListView.Style> 
      <Style TargetType="ListView"> 
       <Style.Triggers> 
        <DataTrigger Binding="{Binding ViewType}" Value="1"> 
         <Setter Property="View" Value="{StaticResource one}" /> 
        </DataTrigger> 
       </Style.Triggers> 
       <Setter Property="View" Value="{StaticResource two}" /> 
      </Style> 
     </ListView.Style> 

Code Behind:

private int viewType; 

    public int ViewType 
    { 
     get { return viewType; } 
     set { viewType = value; 
     UpdateProperty("ViewType"); 
     } 
    }   

    private void listv_MouseEnter(object sender, MouseEventArgs e) 
    { 
     ViewType = 1; 
    } 

    private void listv_MouseLeave(object sender, MouseEventArgs e) 
    { 
     ViewType = 2; 
    } 

USCITA:

Normale Vista: 2 sopra XAML

Normal

MouseOver Vista: 1 sopra XAML

Mouse Over

Se si tenta di ottenere sopra in un ListBox, probabilmente si finisce nel scrivere molto di più codice per ControlTempalate/ItemTemplate di ListBox.

3

La visualizzazione lista deriva dal controllo casella di riepilogo. Una delle differenze più importanti è listview che utilizza la modalità di selezione estesa per impostazione predefinita. listview aggiunge anche una proprietà chiamata view che consente di personalizzare la visualizzazione in modo più ricco rispetto a un pannello degli articoli personalizzato. Un esempio di vita reale di listview con gridview è la vista dettagli di Esplora file. La visualizzazione elenco con la vista griglia è una griglia di dati meno potente. Dopo l'introduzione del controllo di datagrid, listview ha perso la sua importanza.

Problemi correlati