2010-03-22 3 views
1

Quel est le moyen le plus simple de personnaliser l'affichage du contenu de ComboBoxItem? Je voudrais présenter une liste de noms de polices, avec chaque élément dessiné dans la police appropriée.
Je pense que je besoin de quelque chose commeLe moyen le plus simple de style/présenter ComboBoxItem dans Silverlight?

<TextBlock FontFamily="{TemplateBinding Content}" Text="{TemplateBinding Content}" /> 

Où cela aller?
Puis-je créer un modèle de contrôle pour ComboBoxItem et l'utiliser uniquement pour les ComboBox sélectionnées?
Merci pour tout conseils ....

Répondre

5

Silverlight 3 ne dispose pas d'un style implicite, donc si vous créez un style avec un ControlTemplate pour ce faire, vous devez attribuer explicitement à la zone de liste déroulante. Pas d'inquiétude à ce sujet accidentellement ramassé.

j'ai pu y parvenir avec le XAML suivant dans la zone de liste déroulante, lié à un ObservableCollection<string>:

<ComboBox.ItemTemplate> 
    <DataTemplate> 
     <TextBlock FontFamily="{Binding}" Text="{Binding}"/> 
    </DataTemplate> 
</ComboBox.ItemTemplate> 

De toute évidence, la liaison aurait probablement besoin d'un nom de propriété si vous lier à quelque chose de plus complexe, mais cela m'a permis de voir les différentes sélections dans leur propre police.

Vous pouvez également refactoriser ceci soit dans un ou un style si vous vous trouvez à le réutiliser.

+0

Bonne réponse, j'allais suggérer que la source Item soit une collection de 'FontFamily' mais cela fonctionne tout aussi bien. Est-ce que je me demande comment la chaîne est convertie en une «FontFamily» lorsqu'elle est affectée à la propriété «FontFamily», je ne vois pas où cela est fait à moins que la liaison par défaut ne le gère implicitement. Impossible de trouver où cela est documenté cependant. – AnthonyWJones

+0

Il doit y avoir un convertisseur de liaison implicite pour le gérer. Étant donné que vous pouvez le spécifier en tant que chaîne dans XAML et que vous le recherchez correctement, il passe probablement par le même mécanisme. –

+0

Merci, ressemble à ce que je cherchais. – Number8

Questions connexes