Qual è la differenza tra ListBox di WPF e ListView? Non riesco a trovare alcuna differenza significativa nelle loro proprietà. C'è un uso tipico diverso?Qual è la differenza tra ListBox e ListView
risposta
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
Un ListView
consentono di definire un insieme di views
per esso e ti dà un modo nativo (WPF
binding
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
MouseOver Vista: 1 sopra XAML
Se si tenta di ottenere sopra in un
ListBox
, probabilmente si finisce nel scrivere molto di più codice perControlTempalate
/ItemTemplate
diListBox
.
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.
- 1. Qual è la differenza tra Dock e Anchor
- 2. Qual è la differenza tra ItemTemplate e ItemPanelTemplate?
- 3. Qual è la differenza tra getView() e getActivity()?
- 4. Qual è la differenza tra = e: =
- 5. Qual è la differenza tra Verilog! e ~?
- 6. Qual è la differenza tra? : e ||
- 7. qual è la differenza tra [[], []] e [[]] * 2
- 8. Qual è la differenza tra $ e $$?
- 9. Qual è la differenza tra ("") e (null)
- 10. Qual è la differenza tra dict() e {}?
- 11. Qual è la differenza tra " " e ""?
- 12. Qual è la differenza tra {0} e ""?
- 13. Qual è la differenza tra `##` e `hashCode`?
- 14. Qual è la differenza tra {0} e +?
- 15. Qual è la differenza tra .ToString() e + ""
- 16. qual è la differenza tra:.! e: r !?
- 17. Differenza tra ScrollView e ListView
- 18. Qual è la differenza tra ItemTemplate e ItemContainerStyle in un ListBox WPF?
- 19. Qual è la differenza tra getSupportFragmentManager() e getChildFragmentManager()?
- 20. Qual è la differenza tra x: Reference e ElementName?
- 21. Qual è la differenza tra "è Nessuno" e "== Nessuno"
- 22. Unix: Qual è la differenza tra la fonte e l'esportazione?
- 23. Qual è la differenza tra il callback e la promessa
- 24. Qual è la differenza tra la sezione .got e .got.plt?
- 25. Qual è la differenza tra la lista() e []
- 26. Qual è la differenza tra GHC e la piattaforma Haskell?
- 27. Qual è la differenza tra sé e la finestra?
- 28. Qual è la differenza tra la cartella vim72 e vimfiles?
- 29. Qual è la differenza tra la serratura e RLock
- 30. Qual è la differenza tra la funzione() {}() e function() {}()
Cosa intendi per BCL? Grazie. –
@DanieleArmanasco, BCL = [Base Class Library] (http://en.wikipedia.org/wiki/Base_Class_Library) –