Dans WPF Listbox
, je suis confondu avec ces 2 notions: ItemTemplate
et ItemContainerStyle
Quelqu'un peut-il m'expliquer plus?Quelle est la différence entre ItemTemplate et ItemContainerStyle dans un ListBox WPF?
Répondre
Le ItemTemplate permet de personnaliser le contenu de votre élément de données. Vous l'utilisez pour lier des champs de données, formater des chaînes d'affichage, etc. Il détermine comment les données sont présentées. Le ItemContainerStyle sert à styliser le conteneur de l'élément de données. Dans une zone de liste, ce serait un ListBoxItem. Le style affecte ici des choses comme le comportement de sélection ou la couleur d'arrière-plan. Il détermine le style et l'UX de l'affichage.
La page MSDN pour ItemContainerStyle, lié ci-dessus, a un très bon exemple montrant quelques différences:
<!--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>
Le ItemContainerStyle juste un wrapper pour le DataTemplate de sorte qu'un style d'élément commun peut être appliqué à différentes dispositions de données.
En outre, à partir this answer to "DataTemplate vs ItemContainerStyle":
Vous pouvez faire tout votre style dans le ItemTemplate mais le ItemContentStyle a VisualStates qui contrôlent l'Opacité de la souris/désactivé/sélectionné, etc.
Si vous voulez changez ces changements d'état d'opacité, ou si vous voulez une forme de conteneur autre qu'un rectangle, comme un triangle par exemple, alors vous devrez remplacer le ItemContainerStyle par défaut.
I * fortement * vous suggère de rendre plus évident que le texte 'vous pouvez faire tout votre style dans le ItemTemplate mais le ItemContentStyle a des VisualStates qui contrôlent l'Opacité sur la souris sur/désactivé/sélectionné 'et' Si vous voulez changer ces changements d'état d'opacité, ou si vous voulez une forme de Conteneur autre qu'un rectangle, comme un triangle par exemple, alors vous aurez avoir à remplacer le ItemContainerStyle par défaut. »a été copié à partir du lien fourni; ils ont réprimé le plagiat ces derniers temps, ce qui pourrait être considéré comme cela. – LittleBobbyTables
C'est pourquoi j'ai inclus le lien dans ma réponse. Je l'ai fait plus clair que cela est pris sur le site maintenant. – Jeff
Vraiment un downvote? J'ai référencé le lien man? S'il vous plaît lire mon article complet avant downvote. – Jeff
- 1. Quelle est la différence entre ItemTemplate et ItemPanelTemplate?
- 2. Comportement étrange WPF TreeView ItemContainerStyle et ItemTemplate
- 3. Quelle est la différence entre ListBox et ListView
- 4. WPF: Quelle est la différence entre App.xaml et Generic.xaml?
- 5. Quelle est la différence entre = et: =
- 6. Quelle est la différence entre dict() et {}?
- 7. quelle est la différence entre:.! et: r !?
- 8. quelle est la différence entre '! =' Et
- 9. Quelle est la différence entre% et %% dans un fichier cmd?
- 10. Quelle est la différence entre "$^N" et "$ +"?
- 11. Quelle est la différence entre equales et ==
- 12. Quelle est la différence entre un écouteur de classe et un listner d'instance dans WPF?
- 13. Quelle est la différence entre un StackPanel et un DockPanel dans WPF?
- 14. Quelle est la différence entre & et @ Sass
- 15. Quelle est la différence entre '==' et '==='?
- 16. Quelle est la différence entre ~ et! opérateur?
- 17. Quelle est la différence entre == et ===?
- 18. quelle est la différence entre == et ===?
- 19. quelle est la différence entre * et l'objet
- 20. Quelle est la différence entre `{}` et `[]`?
- 21. Quelle est la différence entre un nœud et un sommet?
- 22. Quelle est la différence entre un assistant et un partiel?
- 23. WPF ListBox avec seulement Button pour ItemTemplate
- 24. WPF ListBox avec le problème ItemTemplate
- 25. Quelle est la différence entre un HashMap et un TreeMap?
- 26. Quelle est la différence entre un analyseur et un scanner?
- 27. Quelle est la différence entre un nanokernel et un exokernel?
- 28. Quelle est la différence entre un DataSource et un DataAdapter?
- 29. Quelle est la différence entre un EntityManagerFactory et un EntityManager
- 30. Quelle est la différence entre un "nonce" et un "GUID"?
Peut-être lié: http://stackoverflow.com/questions/5978358/datatemplate-vs-itemcontainerstyle – LittleBobbyTables