WPF reliure: Jeu Listbox Élément de couleur de texte basé sur la propriété
Je suis sûr que c'est probablement quelque chose de fondamental dans WPF, mais je suis de nouveau à la syntaxe XAML je suis d'essayer d'envelopper ma tête autour de lui.
L'Installation
J'ai un LogItem
Type, juste un POCO:
public class LogItem
{
public string Message {get;set;}
public Color MessageColor {get;set;}
}
et une Liste de LogItem
dans mon ViewModel:
private ObservableCollection<LogItem> _logItems;
public ObservableCollection<LogItem> LogItems
{
get { return _logItems; }
set
{
if (value != _logItems)
{
_logItems = value;
OnPropertyChanged("LogItems");
}
}
}
Mon viewmodel est lié à la vue afin que je puisse effectuer les opérations suivantes:
<ListBox Grid.Row="0" Margin="0,10,0,0" Grid.ColumnSpan="3" Height="150" ItemsSource="{Binding LogItems}">
(Évidemment, je reste à définir l'affichage de texte, reliure, etc)
La Question
Étant donné que j'ai un Message
et MessageColor
propriété dans LogItems, quelle est la bonne syntaxe XAML pour lier la couleur du texte de l'élément de la couleur que je le préciser?
N'oubliez pas de faire le LogItem propriétés publiques. De liaison à eux de ne pas travailler autrement.
Désolé, j'ai fait faire, mais a été écrit ceci à partir de la mémoire. Merci pour l'attraper! Je vais modifier.
Désolé, j'ai fait faire, mais a été écrit ceci à partir de la mémoire. Merci pour l'attraper! Je vais modifier.
OriginalL'auteur SeanKilleen | 2013-09-24
Vous devez vous connecter pour publier un commentaire.
TextBlock
Foreground
s'attend à unBrush
pas unColor
. Comme beaucoup de choses dans WPF, Il ya beaucoup de façons d'approche. Voici un couple de:Changement de
MessageColor
propriété dans le viewModel deBrush
Créer un
SolidColorBrush
et le lier à votre couleurCréer un
ColorToBrushConverter
En xaml, créer le convertisseur statique de ressources
l'utiliser dans la liaison
Bonne chance
mise à jour, merci
Merci à vous deux pour la réponse rapide! Je n'ai pas de problème de le changer pour un pinceau. Malheureusement je ne serai pas près de le code pour un peu, donc je vais marquer ce qu'a répondu cet après-midi. Merci de me donner un aperçu de l'ItemTemplate et DataTemplate stucture! Ne peut pas attendre jusqu'à ce que je viens pour l'air et le temps de creuser dans cette liaisons en profondeur.
Je l'ai mise à jour de ma réponse à inclure le convertisseur méthode de trop. depuis votre e dans la phase d'apprentissage, Il est bon d'obtenir pour vous familiariser avec autant de méthodes que vous le pouvez. amusez-vous 🙂
Au lieu d'ajouter un ColorToBrushConverter vous pouvez juste créer un SolidColorBrush avec une borne Couleur de la propriété dans le code XAML comme franssu a montré. C'est beaucoup plus simple.
OriginalL'auteur Omri Btian