In WPF Listbox
, sono confuso con queste 2 nozioni: ItemTemplate
e ItemContainerStyle
Qualcuno può spiegarmi di più?Qual è la differenza tra ItemTemplate e ItemContainerStyle in un ListBox WPF?
risposta
Il ItemTemplate è per lo stile come viene visualizzato il contenuto dell'elemento di dati. Lo si utilizza per associare campi dati, formattare le stringhe di visualizzazione e così via. Determina come vengono presentati i dati.
Il ItemContainerStyle è per lo styling del contenitore dell'elemento di dati. In una casella di riepilogo, questo sarebbe un ListBoxItem. Lo stile qui riguarda cose come il comportamento di selezione o il colore di sfondo. Determina lo stile e la UX del display.
La pagina di MSDN per ItemContainerStyle, linkata sopra, ha un buon esempio che mostra alcune differenze:
<!--Use the ItemTemplate to set a DataTemplate to define the visualization of the data objects. This DataTemplate specifies that each data object appears with the Proriity and TaskName on top of a silver ellipse.--> <ItemsControl.ItemTemplate> <DataTemplate> <DataTemplate.Resources> <Style TargetType="TextBlock"> <Setter Property="FontSize" Value="18"/> <Setter Property="HorizontalAlignment" Value="Center"/> </Style> </DataTemplate.Resources> <Grid> <Ellipse Fill="Silver"/> <StackPanel> <TextBlock Margin="3,3,3,0" Text="{Binding Path=Priority}"/> <TextBlock Margin="3,0,3,7" Text="{Binding Path=TaskName}"/> </StackPanel> </Grid> </DataTemplate> </ItemsControl.ItemTemplate> <!--Use the ItemContainerStyle property to specify the appearance of the element that contains the data. This ItemContainerStyle gives each item container a margin and a width. There is also a trigger that sets a tooltip that shows the description of the data object when the mouse hovers over the item container.--> <ItemsControl.ItemContainerStyle> <Style> <Setter Property="Control.Width" Value="100"/> <Setter Property="Control.Margin" Value="5"/> <Style.Triggers> <Trigger Property="Control.IsMouseOver" Value="True"> <Setter Property="Control.ToolTip" Value="{Binding RelativeSource={x:Static RelativeSource.Self}, Path=Content.Description}"/> </Trigger> </Style.Triggers> </Style> </ItemsControl.ItemContainerStyle>
L'ItemContainerStyle solo un wrapper per il DataTemplate in modo che può essere applicato uno stile comune oggetto a diversi layout di dati.
Inoltre, da this answer to "DataTemplate vs ItemContainerStyle":
Si può fare tutto il tuo stile nel ItemTemplate, ma l'ItemContentStyle ha VisualStates che controllano l'opacità al passaggio del mouse/disabili/selezionato ecc
Se si desidera cambia le modifiche allo stato di opacità, o se vuoi una forma Container diversa da un rettangolo, ad esempio un triangolo, dovrai sostituire il ItemContainerStyle predefinito.
I * fortemente * suggerisco di fare è più evidente che il testo 'si può fare tutto il tuo stile nel ItemTemplate, ma the ItemContentStyle ha VisualStates che controllano l'opacità sul mouse sopra/disabilitato/selezionato 'e' Se vuoi cambiare le modifiche allo stato di opacità, o se vuoi una forma Container diversa da un rettangolo, ad esempio un triangolo, allora è necessario sovrascrivere il valore predefinito ItemContainerStyle. è stato copiato dal collegamento fornito; ultimamente si sono scontrati con il plagio, il che è ciò che questo potrebbe essere visto come. – LittleBobbyTables
Ecco perché ho incluso il link nella mia risposta. Ho reso più chiaro questo è preso dal sito ora. – Jeff
Davvero un downvote? Ho fatto riferimento al link uomo ?? Si prega di leggere il mio INTERO post prima del downvote. – Jeff
- 1. Qual è la differenza tra ItemTemplate e ItemPanelTemplate?
- 2. Qual è la differenza tra ListBox e ListView
- 3. ItemTemplate: ListBox vs ItemsControl
- 4. Qual è la differenza tra Width e ActualWidth in WPF?
- 5. Qual è la differenza tra HorizontalAlignment e HorizontalContentAlignment in WPF?
- 6. Qual è la differenza tra DataTemplate e DataContext in WPF?
- 7. WPF: Aggiunta di un'immagine a un ListBox ItemTemplate
- 8. Qual è la differenza tra WPF e WinForms?
- 9. Qual è la differenza tra l'applicazione WPF e Silverlight?
- 10. C# wpf - impossibile impostare DisplayMemberPath e ItemTemplate
- 11. Qual è la differenza tra Dock e Anchor
- 12. ItemTemplate vs ControlTemplate
- 13. Qual è la differenza tra x: Reference e ElementName?
- 14. Qual è la differenza tra un listener di classe e un listener di istanze in WPF?
- 15. Qual è la differenza tra dict() e {}?
- 16. Qual è la differenza tra = e: =
- 17. Qual è la differenza tra Verilog! e ~?
- 18. Qual è la differenza tra .ToString() e + ""
- 19. Qual è la differenza tra `##` e `hashCode`?
- 20. qual è la differenza tra:.! e: r !?
- 21. Qual è la differenza tra ("") e (null)
- 22. Qual è la differenza tra% e %% in un file cmd?
- 23. Qual è la differenza tra. e # in un file css?
- 24. qual è la differenza tra @ e @@ in un modulo?
- 25. Qual è la differenza tra? : e ||
- 26. qual è la differenza tra [[], []] e [[]] * 2
- 27. Qual è la differenza tra $ e $$?
- 28. Qual è la differenza tra " " e ""?
- 29. Qual è la differenza tra {0} e ""?
- 30. Qual è la differenza tra {0} e +?
possibilmente correlate: http://stackoverflow.com/questions/5978358/datatemplate-vs-itemcontainerstyle – LittleBobbyTables